常规算法
/*
素数打表 获得10000内所有的素数
*/
using namespace std;
//存储素数表,0为素数 1 为合素
int prime[10000],oriPrime[10000],len = 0;
//素数打表
void fun();
//打印函数
void print(int t);
int main()
{
fun();
for_each(oriPrime,oriPrime+20,print);
}
void fun()
{
//全数组全部置0全为素数
memset(prime,0,sizeof(prime));
//初始化前三位
prime[0] = 1,prime[1] = 1,prime[2] = 0;
for(int i = 2;i < 10000;i++)
{
//如果是质素 不管它
if(prime[i])
{
//将i保存
continue;
}
//其他和数 及去掉倍数
for(int j = 2;j*i < 10000;j++)
{
prime[i*j] = 1;
}
oriPrime[len++] = i;
}
}
void print(int t)
{
cout << t << " ";
}