我有两种方法可以在java方法中找出素数 - 2工作正常,但从方法一中得到错误的输出,可以帮助我在逻辑上出错的地方。提前致谢
我的整个代码
package prepare;
import java.util.Scanner;
public class Squar {
//Method - 1 to find prime number
boolean isPrime(int num){
int exp = (int)Math.sqrt(num);
for(int i=2;i<exp;i++){
if(exp%2==0){
return false;
}
}return true;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
Squar s = new Squar();
System.out.println("From M1 "+s.isPrime(num));
scan.close();
System.out.println("From M2 "+s.isPrimeNumber(num));
}
//Method - 2 to find prime number
public boolean isPrimeNumber(int number) {
if(number == 1){
return false;
}
if (number == 2 || number == 3) {
return true;
}
if (number % 2 == 0) {
return false;
}
int sqrt = (int) Math.sqrt(number) + 1;
for (int i = 3; i < sqrt; i += 2) {
if (number % i == 0) {
return false;
}
}
return true;
}
}
对于输入:63 实际输出在素数中将是错误的,但得到 与方法一不同的输出 输出
63
From M1 true
From M2 false
最佳答案
在 isPrime()
方法中,您不应该检查 num % i == 0
而不是 exp % 2 == 0
?
关于java - 在java中查找素数时得到奇怪的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52255757/