筛选法求100以内的素数
2009-07-28 18:17
405 查看
【题目如下】
使用筛选法求100以内的素数
【问题分析】
我们可以把100个数看作是沙子和石子,素数是石子,非素数的是沙子,弄个筛子,将沙子筛掉,剩下的就是素数。
1至100这些自然数可以分为三类:
(1) 单位数:仅有一个数1.
(2) 素数:这个数大于1,且只有它本身和1这样两个正因数。
(3) 合数:除了1和他自身以外,还有其他的正因数。
【代码如下】
【运行结果】
使用筛选法求100以内的素数
【问题分析】
我们可以把100个数看作是沙子和石子,素数是石子,非素数的是沙子,弄个筛子,将沙子筛掉,剩下的就是素数。
1至100这些自然数可以分为三类:
(1) 单位数:仅有一个数1.
(2) 素数:这个数大于1,且只有它本身和1这样两个正因数。
(3) 合数:除了1和他自身以外,还有其他的正因数。
【代码如下】
/******************************************************** /* 程 序 名:素数筛选 /* 作 者:为了娶个美女老婆而AC /* 编程时间:2009年7月27日 /* 主要功能:求素数 *********************************************************/ #include<iostream> using namespace std;//编译命令 #include<math.h> 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<<i<<" "; } cout<<endl; return 0;//主函数结束 }
【运行结果】
相关文章推荐
- JavaScript使用filter方法实现100以内素数的快速筛选
- 一个根据筛选法求出100以内的所有素数的小程序
- 求出100以内的所有素数--筛选法和根号法
- 用筛选法求100以内的素数(数组)
- 用筛选法求100以内的素数
- 100以内素数判定(筛选法)
- 用筛选法求出100以内的素数
- 用筛选法求100以内的素数
- 用筛选法求100以内的素数(数组)
- 用筛选法求出100以内的全部素数,并按每行五个数显示。(C#)
- 筛选法输出100以内的所有素数
- 用筛选法求100以内的素数
- 筛选法选100以内的素数!
- 筛选法求100以内的素数
- 筛选法求100以内的素数
- 筛选法查找100以内的素数
- 用筛选法求100以内的素数问题
- 100以内所有的素数,每个素数之间用空格隔开,注:最后一个数字不要空格
- GO语言求100以内的素数
- OJ--筛选N以内的素数