既然直接要求源代码,那我就直接贴源代码吧。
#include
#include
#include
#define maxn 10005
using namespace std;
bool vis[maxn];
int prime[maxn];
//素数的线性打表
void Clear()
{
memset(vis,0,sizeof(vis));
int num = 0;
vis [1] = 1;
//素数倍数全部标记
for(int i = 2;i
if(!vis[i])
{
prime[++num] = i;
}
for(int j = 1;j<=num&&i*prime[j]
vis[prime[j]*i] = 1;
if(i%prime[j]==0) break;//避免重复的出现 例如 5*9 3*15
}
}
}
int main()
{
Clear();
//素数前100个素数
for(int i = 1;i<=100;i++)
{
printf("%4d",prime[i]);
if(i%5==0) printf("\n");
}
return 0;
}
用这个方法对素数进行打表虽然很快,但其实并不是最快的。
但楼主只要求这个的话那就只贴这个吧
#include
using namespace std;//编译命令
#include
const int MAX=100;//定义常量MAX
int main()//主函数
{
int prime[MAX+100]={0};//定义变量并初始化
int i,j,k=sqrt(MAX);
for(i=2; i<=k; i++)//枚举筛数
{
if(prime[i]==0)//如果这个数没被筛,就看看
{
j=i*2;//将原数扩大二倍初始化给j
do
{
prime[j]=1;//将j筛掉
j+=i; //再扩大一倍
}
while(j<=MAX);//直到最大
}
}
for(i=2; i<=MAX; i++)
{
if(prime[i]==0)//循环输出
cout< }
cout<
}
请采纳。