|
本帖最后由 diggersun 于 2014-10-25 14:58 编辑
假设求2..200之间的质数,筛法求质数的步骤是:
1、先将2-200之间的所有数字标记为质数
2、从2开始,若这个数是质数,则划掉他的倍数
3、直到200为止。
- #include<iostream>
- using namespace std;
- bool a[201]; //定义201个变量,分别是a[0],a[1].***a[200],前面的a[0],a[1]被浪费了。
- int i,j;
- int main()
- {
- for (i=2; i<=200; i++) a[i]=true; 假设都是素数
- i=2; 从2开始
- while (i<=200) 小于200就做
- {
- if (a[i]) 若是素数,则划掉他的倍数
- {
- j=i+i; 这里居然可以将i+i 变成i*i?????
- while (j<=200) 倍数也应该在200以内
- {
- a[j]=false; // 将i的倍数刷掉
- j=j+i; 下一个
- }
- }
- i++;
- }
- for (i=2; i<=200; i++) if (a[i]) cout <<i<<' ';
- return 0;
- }
复制代码 |
|