- // 用筛选法求 100 之内的素数(挖去 1,被除数平方根)
- //筛选法又称筛法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。
-
- #include<stdio.h>
-
- int main()
- {
- //创建一个数组存储这100个数
- int a[100];
- for (int i = 0; i < 100; i++)
- {
- a[i]=i+1;
- }
- //把1删除,这个数被删除了表示为这个数等于-1
- a[0]=-1;
- for (int i = 1; i < 100; i++)
- {
- //判断这个数是否存在
- if (a[i]!=-1)
- {
- //如果存在,就把这个数当作除数,比这个数大的数当作被除数
- for (int j = i+1; j < 100; j++)
- {
- //如果被除数存在并且可以整除,就删除这个被除数
- if (a[j]!=-1&&a[j]%a[i]==0)
- {
- a[j]=-1;
- }
- }
- }
- }
- //打印出没有被删除的数,即素数
- for (int i = 0; i < 100; i++)
- {
- if (a[i]!=-1)
- {
- printf("%d\n",a[i]);
- }
- }
- return 0;
- }
