gpt4 book ai didi

java - 编写一个确定素数的程序

转载 作者:行者123 更新时间:2023-12-02 01:49:54 24 4
gpt4 key购买 nike

我正在尝试编写一个程序,要求用户输入一个数字,然后我需要创建一个名为 isPrime 的方法来创建计算并在 main 中打印结果。我确信我遗漏了一些小东西,但我无法让它产生准确的结果。

public static void main(String[] args) {
System.out.print("Enter number: ");
int num = s.nextInt();

if (isPrime(num) == true) {
System.out.println("Number is prime");
} else if (isPrime(num) == false) {
System.out.println("Number is not prime");
}
}

public static boolean isPrime(int num){
for(int i = 2; i <= num/2; i++) {
if (num%i != 0) {
return true;
}
}
return false;
}

最佳答案

使用 ifelse (不要在第一种情况下重新测试 boolean 条件)。并且不要在 if 中测试 == true。这个

if(isPrime(num) == true)
{
System.out.println("Number is prime");
}
else if(isPrime(num) == false)
{
System.out.println("Number is not prime");
}

应该是

if (isPrime(num)) {
System.out.println("Number is prime");
} else {
System.out.pritnln("Number is not prime");
}

或者甚至类似的东西

System.out.print("Number is ");
if (!isPrime(num)) {
System.out.print("not ");
}
System.out.println("prime");

如果您想将大括号放在自己的线上,请继续。至于你的 isPrime 方法;您的返回条件被逆转(以及测试)。我们也可以对其进行一些优化。展开第一个偶数测试,因为这样我们就可以跳过所有其他元素。此外,我们只需要测试输入数字的平方根。就像,

public static boolean isPrime(int num) {
if (num == 2) {
return true; // two is prime.
}
if (num < 1 || num % 2 == 0) {
return false; // all other even numbers are not prime.
}
for(int i = 3; i <= Math.sqrt(num); i += 2) {
if (num % i == 0) {
return false;
}
}
return true;
}

关于java - 编写一个确定素数的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53137641/

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