请问我的代码中可能存在什么错误,为什么它打印数字而不是仅打印小于 10,000 的质数?
public class Isprime {
public static void main(String[] args) {
System.out.println("The prime numbers less that 10000 are:");
int number = 2;
printprime(number);
}
public static void printprime(int number) {
int pperline = 10;
int count = 0;
while (number < 10000) {
if (isprime(number)) {
count++;
}
if (count % pperline == 0) {
System.out.println();
} else {
System.out.print(number + ",");
}
number++;
}
}
public static boolean isprime(int number) {
for (int divisor = 2; divisor <= number / 2; divisor++) {
if (number % divisor == 0)
return false;
}
return true;
}
}
最佳答案
您正在计算一个数字是否是素数,但您没有在检查该数字的条件内进行打印。这意味着您的素数计数是正确的,但是您为每个数字打印一些内容,而不仅仅是素数。
您需要将 print 语句移至 if (isprime(number))
检查内。另外,您只打印一个质数或换行符。您应该从格式逻辑中删除 else
,这样就不会跳过每 10 个素数的打印:
public static void printprime(int number) {
int pperline = 10;
int count = 0;
while (number < 10000) {
if (isprime(number)) {
count++;
if (count % pperline == 0) {
System.out.println();
}
System.out.print(number + ",");
}
number++;
}
}
关于Java逻辑错误: isPrime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29809348/