我有两种方法可以在 java 方法中找出素数 - 2 工作正常,但从方法 1 得到错误的输出,可以帮助我在逻辑上做错的地方。提前致谢我的整个代码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 实际输出在素数中是假的,但从方法一输出得到不同的 输出63From M1 trueFrom M2 false
3 回答
HUWWW
TA贡献1874条经验 获得超12个赞
isPrime像这样改变功能。
boolean isPrime(int num) {
int exp = (int) Math.sqrt(num);
for (int i = 2; i < exp; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
因为在 if 条件下,您正在检查 exp%2 == 0. 但是这个语句在迭代时不会改变i < exp。所以这个逻辑应该继续num % i == 0
添加回答
举报
0/150
提交
取消