我正在尝试编写一个程序,该程序使用谓词方法来查找1-100之间的所有素数。我知道现在有更有效的方法来寻找素数,但是现在我想使用强力策略并尝试所有可能的组合。
现在的程序就是这样,只是打印真假10000次,但我希望我的程序只打印数字,如果它们是素数。所以在程序完成后,我会得到一个介于1到100之间的素数列表。
1.我的程序是否正确? 2.什么是最好的建议改变我的程序,以便它列出1-100之间的所有素数。编写一个方法来查找素数
import acm.program.*;
public class PrimeNumbers extends ConsoleProgram{
public void run(){
for (int i =1; i <= 100, i++){
for (int j =1; j<= 100; j++){
println(yesPrime(i, j));
}
}
}
private boolean yesPrime (int n, int k){
return (n % k == 0)
}
}
}
'yesPrime '只检查n是否可以被k整除。那真的是你想要的吗? – FDinoff
只是一个提示:为了通过使用蛮力来查找素数,您需要验证数字N是否只能由1和自身整除。你的'yesPrime'方法不处理这个问题。 –
您可能想要使用http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes – Bill