[英]A loop for checking prime number
package pureTest;
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class test3 {
public static void main(String[] args) {
/* Enter your code here. */
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 2; i< n; i++){
if( n <= 3){
System.out.println("Prime");
break;
}else if( n%i ==0){
System.out.println("Not Prime");
break;
}else{
System.out.println("Prime");
}
}
}
}
the input of 7; 输入7; the out put is repetitions of Prime:
输出是Prime的重复:
7
Prime
Prime
Prime
Prime
Prime
Just wondering why the if condition doesn't work out here. 只是想知道为什么if条件不能在这里解决。
Your else clause is wrong. 您的else子句是错误的。 It prints "Prime" each time
n
is not divisible by i
. 每当
n
不被i
整除时,它将打印“ Prime”。 It will even print prime
for non prime inputs (for example, it will print "Prime" for 21 before printing "Not Prime", since 21%2 != 0). 它甚至会为非素数输入打印
prime
数(例如,由于21%2!= 0,它将在打印“非素数”之前打印“素数”为21)。
Change your loop to something like : 将循环更改为:
for (int i = 2; i < n; i++) {
if( n <= 3){
System.out.println("Prime");
return;
} else if(n%i == 0){
System.out.println("Not Prime");
return;
}
}
System.out.println("Prime");
your code will print prime until it finds divisor ! 您的代码将打印质数,直到找到除数!
for (int i = 2; i< n; i++){
if( n <= 3){
System.out.println("Prime");
break;
}else if( n%i ==0){
System.out.println("Not Prime");
break;
}else{
System.out.println("Prime"); --> this line will be printed every time in your loop!
}
}
Also you don't need to iterate till n, as after n/2 there would be no number which can divide n :-) 另外,您不需要迭代到n,因为在n / 2之后将没有数字可以除以n :-)
Check this code... 检查此代码...
private static boolean checkPrime(int n) {
int i = 2;
while(i<=n/2){
if(n%i++ == 0){
return false;
}
}
return true;
}
public static void main(String[] args) {
/* Enter your code here. */
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
boolean isPrime = true;
for (int i = 2; i< n; i++){
if( n <= 3){
break;
}else if( n%i ==0){
System.out.println("Not Prime");
break;
}
}
if (isPrime) {
System.out.println("Prime");
} else {
System.out.println("Not prime");
}
}
If you want to simply check in the main
function the above is ok. 如果您只想签入
main
功能,上面的操作就可以了。 If you want to do that well try the following: 如果您想做的很好,请尝试以下操作:
public static void main() {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
if (isPrime(n)) {
System.out.println("Prime");
} else {
System.out.println("Not prime");
}
}
boolean isPrime(int n) {
if (n < 2) {
return false;
if (n == 2)
return true;
if (n%2 == 0)
return false;
for (int i = 3; i*i<=n; i+=2){
if (n%i == 0)
return false
return true;
}
boolean isPrime = true;
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 2; i< n; i++){
if(n%i==0) {
System.out.println("Not Prime");
isPrime=false;
break;
}
}
if(isPrime) {
System.out.println("Prime");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.