改进1:n只需要被2~√n之间的数整除即可
#include<stdio.h>
#include<math.h>
int main()
{
int n, i,k;
for (n = 100; n <= 200; n++)
{
k = sqrt(n);
for (i = 2; i <=k; i++)
{
if (n%i == 0)break;
{
if (i >= k)
{
printf("%d ", n);
}
}
}
}
system("pause");
return 0;
}
运行结果如下:
改进2:所有偶数都不是素数,所以在循环过程中可以只对奇数进行判定
#include<stdio.h>
#include<math.h>
int main()
{
int n, i, k;
for (n = 101; n <= 200; n+=2)
{
k = sqrt(n);
for (i = 2; i <= k; i++)
{
if (n%i == 0)break;
{
if (i >= k)
{
printf("%d ", n);
}
}
}
}
system("pause");
return 0;
}
本文介绍了一种通过减少检查范围和忽略偶数来优化素数筛选的方法。具体来说,算法仅检查从2到目标数平方根之间的数,并且跳过所有的偶数,以此提高效率。
1244

被折叠的 条评论
为什么被折叠?



