实例四十九:筛选法

mac2022-06-30  116

实例四十九:筛选法

问题描述: 用筛选法求指定范围内全部素数。

算法思路:

筛选法求素数基本原则就是“筛”掉指定范围内的非素数。 比如,要求 100 以内的所有素数,先将 2~100 之间的数按顺序放到一维数组中,从数组中先找出最小的素数(即 2 ),然后将该素数的倍数从数组中“筛”掉,其方法就是将数组中该素数的倍数的那些元素置 0 .再从数组中找出次小的非零数(即下一个素数),重复以上步骤,最后数组中非零的元素就都是素数。

#include<stdio.h> #define N 100 int main() { int a[N],i,j; for(i=1;i<N;i++) a[i] = 1 + i; for(i=1;i<N;i++) { if(a[i]==0) continue; for(j=i+1;j<N;j++) if(a[j] % a[i]==0) a[j] = 0; } for(j=0,i=1;i<N;i++) if(a[i]!=0) { j++; printf("%d",a[i]); if(j%5==0) printf("\n"); } return 0; }
最新回复(0)