您的位置:首页 > 其它

如何判断100以内的素数?

2018-03-28 17:51 351 查看
int i, j;
int count=0;
for (i = 2; i <= 100; i++) {
for (j = 2; j < i; j++) {
if (i % j == 0)
break;
}
if (j == i)
{
System.out.print(i+" ");
count++;
}
}
System.out.println("---------"+count+"----------");
for (int i = 2; i <= 100; i++) {// 1既不是质数也不是和数,所以从2开始
boolean k = true;
for (int n = 2; n < i; n++) {//注意n<i所以如果在i之前 ,有能取余为0的,就不是素数
if (i % n == 0) {
k = false;
break;
}
}
if (k) {
System.out.print(i + " ");
}

}
1、外层for循环有必要执行100次吗?除了2所有的偶数都不是质数,那么能不能只遍历奇数。代码:for (int i = 3; i < 100; i+=2) //i一次循环自增2考虑到这个问题,for循环就少遍历了50次。效率就提升了一倍2、内层for循环能不能也做些优化呢?内层for循环作为 除数(除数从3 到 被除数-1),通过规律发现除数只需要从3 到 除数的开平方根数 就行了。 boolean bool;
int count=0;
System.out.print(2+" ");
for (int i = 3; i < 100; i += 2) {//能够被2整除的不是素数,所以2的倍数的数不是素数
bool = true;

for (int j = 3; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
bool = false;
break;
}
}
if (bool)
{
System.out.print(i + " ");
count++;
}
}
System.out.print(count+1+"--------");

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: