C语言筛法求素数
#include <stdio.h>
void main(){
int i, j,range =100;
int IsPrime[100];
for (i = 0; i <= range; ++i)
IsPrime[i] = 1;
IsPrime[0] = IsPrime[1] = 0;
for (i = 2; i <= range; ++i) {
if (IsPrime[i]) {
for (j = 2 * i; j <= range; j += i)
IsPrime[j]=0;
}
}
for (i = 0; i <= range; ++i)
if(IsPrime[i])
printf("%d ",i);
}
算法思想:令A为素数,则A*N(N>1;N为自然数)都不是素数
或者用取余为0判断是否能整除:
#include <stdio.h>
#include <math.h>
void main(){
int a[100],i,j;
int range = 100;
for(i=0;i<100;i++)
a[i] = i+1;
a[0]=0;
for(i=1;i<sqrt(range);i++){
for(j=i+1;j<100;j++)
if(a[i]!=0 && a[j]%a[i]==0)
a[j] = 0;
}
for(i=0;i<100;i++)
if(a[i])
printf("%d ",a[i]);
}