gpt4 book ai didi

java - 在java中查找素数时得到奇怪的输出

转载 作者:行者123 更新时间:2023-12-01 16:45:32 24 4
gpt4 key购买 nike

我有两种方法可以在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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com