我的代码出了点问题。我正在尝试编写一个方法,它将输出2-10,000之间的所有质数。我还是个java的初学者,我不确定该怎么做,我知道我会使用二进制搜索方法和循环来做这件事。我试着按照我在课本和网上读过的例子;这就是我想出来的,但是它不能正常工作。我不确定它是否完全正确。任何关于如何做到这一点或修复这一点的帮助或建议将不胜感激。
public static void prime() {
int i; // variable for loop
for(i=2; i<=10000; i++)
{
int factors =0;
int j = 1;
while(j<=i)
{
if(i%j == 0)
{
factors++;
} //End if
j++;
}
if(factors == 2)
{
System.out.println(i);
} //End if
}// End for
} // End method prime发布于 2015-07-11 10:07:50
想一想质数的含义:一个只能被1及其本身整除的数。使用该定义,您可以编写一段效率更高的代码,检查当前数字是否能被1以外的数字及其本身整除,即2。
发布于 2015-07-11 10:12:19
您可以做的一个改进是,如果一个数具有两个以上的因子,则在达到第二个循环的极限之前停止测试它是否是质数。
public static void printPrimes()
{
int i;
boolean isPrime ;
for(i=2; i<=10000; i++)
{
int factors ;
int j ;
factors = 1 ;
isPrime = true ;
for(j = 2; isPrime && j <= i; j++)
{
if(i%j == 0)
{
factors++;
}
if(factors > 2)
{
isPrime = false ;
}
}
if(isPrime)
{
System.out.println(i);
}
}
} 如果您想要使用这段代码中提到的break或isPrime标志,这里有一个非常好的答案,它解释了为什么这两种方法都可以使用,而且更多的是样式问题,避免了复杂的外观条件
https://stackoverflow.com/questions/31352703
复制相似问题