求素数
显然,可以暴力
int zhishu(int n)
{
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
return 0;
}
return 1;
}
for(int j=1;j<=m;j++)
zhishu(j);
显然,复杂度为O(n(sqrt(n))的。
复杂度太高。
我会O(1)方法——打表
介绍两种O(n)的算法。
一、Eratosthenes
——(埃筛)
1.基本思想:
质数的倍数一定不是质数。
2.实现方法:
从小至大枚举质数x,把x的倍数都标记为非质数。
即: