我希望我的 isPrimeNumber 函数返回 null(因此它不会打印 isPrimeNumber 函数中的任何数字),但方法显然不能返回 null。我希望 for 循环掩盖打印的数字和素数函数,并打印不在素数函数中的数字和一个,即合数。这是我的代码的样子:
//prints all composite numbers
public class App {
public static void main(String[] args)
{
for(int i = 1; i <= 10000; i++)
{
if (isPrimeNumber(i))
{
return null;
}else{
System.out.println(i);
}
}
}
public static boolean isPrimeNumber(int i) {
int factors = 0;
int j = 1;
while(j <= i)
{
if(i % j == 0)
{
factors++;
}
j++;
}
return (factors == 2);
}
}
main 函数中的 else 语句应该打印 1 到 10000 之间的所有合数。我该如何解决这个问题?
最佳答案
当您找到质数时,不要返回空值
。你不能从具有 void
返回类型的方法返回值,但即使这段代码确实通过了编译,当你检测到素数时你也不想离开该方法。
改变条件从
if (isPrimeNumber(i)) {
return null;
} else {
System.out.println(i);
}
到
if (!isPrimeNumber(i)) {
System.out.println(i);
}
关于java - 用于打印合数的循环生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38204864/