C 使用筛选法求100以内的素数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C 使用筛选法求100以内的素数

C++使用筛选法求100以内的素数,具体问题分析及其代码如下:

【问题分析】

我们可以把100个数看作是沙子和石子,素数是石子,非素数的是沙子,弄个筛子,将沙子筛掉,剩下的就是素数。

1至100这些自然数可以分为三类:

(1) 单位数:仅有一个数1.

(2) 素数:这个数大于1,且只有它本身和1这样两个正因数。

(3) 合数:除了1和他自身以外,还有其他的正因数。

【代码如下】

/********************************************************

/* 程序名:素数筛选

/* 编程时间:2009年7月27日

/* 主要功能:求素数

*********************************************************/

#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<

return 0;//主函数结束

}

【运行结果】

相关文档
最新文档