该程序检查用户输入的数字是否为素数。
我的问题在if
语句中。由于某些原因,Boolean
永远不会切换。如果数字为质数,则只会给出两个结果。
我想念什么?
import java.util.Scanner;
public class Prime
{
public static void main(String[] args)
{
System.out.println("Enter a number to check if it is prime:");
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
boolean more = true;
do
{
for (int i = 2; i <= n; i++)
{
if (n <=1 || n%i==0)
{
System.out.println(n + " is not prime");
more = false;
}
}
}
while (more);
System.out.println(n + " is prime");
}
}
最佳答案
删除if()
内部的打印件,并在do while循环后使用以下代码
if(more)
System.out.println(n + " is prime");
else
System.out.println(n + " is not prime");
并且您也不需要do while循环将其删除。完整代码
System.out.println("Enter a number to check if it is prime:");
Scanner kb = new Scanner(System. in );
int n = kb.nextInt();
boolean more = true;
for (int i = 2; i <= n / 2; i++) {
if (n <= 1 || n % i == 0) {
more = false;
break;
}
}
if (more) System.out.println(n + " is prime");
else System.out.println(n + " is not prime");
Demo
关于java - 计算素数(新手),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32786291/