如何改进以下代码的逻辑?目的是计算从1到用户输入(limitno)的素数。这个程序运行得很好,只是它需要一段时间,比通常的1-3秒要长,才能为99999这样的大数字生成一个结果。
public static int countPrime(int limitNo) {
int noOfTimes = 0, noOfRounds = 0; int o = 1;
while (o <= limitNo) {
for (int i = 1; i <= o; i++) {
if (o%i == 0) {
noOfRounds++;
}
}
if (noOfRounds == 2) {
noOfTimes++;
}
noOfRounds = 0;
o++;
}
return noOfTimes;
}
1条答案
按热度按时间vcudknz31#
代码可以通过
把一些线分开做成一条线
isPrime()
方法。变化的极限
for
循环,如果满足条件,则表示该数字不是素数。将方法中的代码替换为
isPrime()
改变开始int o = 2 ;
.当然,还有更多更好的改进,如: