素数筛选法之埃拉托色尼筛

来源:互联网 发布:java 函数重载形式 编辑:程序博客网 时间:2024/05/01 02:18
   
埃拉托色尼筛选法
下面求1-100的所有素数

Codes 1:

#include <stdio.h>#include <memory.h>#define true 1#define false 0int main(){    int i,j,prime[101];    for(i=0; i<=100; i++)        prime[i]=i;    memset(prime,true,sizeof(prime));//函数原型memset(void *s,int ch,size_t n);头文件<memory.h>&<string.h>    prime[0]=prime[1]=false;    for(i=2; i<=100; i++)    {        if(prime[i])            for(j=2*i; j<=100; j+=i)                prime[j]=false;    }    for(i=1; i<=100; i++)        if(prime[i])            printf("%d ",i);    return 0;}
Codes 2:

//C语言中0为假,非0为真
#include <stdio.h>#define N 10000int main(){    int i ,j,a[N],count=0;    for(i=2; i<N; i++) a[i]=1;//全部位置为真    for(i=2; i<N; i++)        if(a[i])            for(j=2*i; j<N; j+=i) a[j]=0;//合数位置为假    for(i=2; i<N; i++)        if(a[i])        {            printf("%d ",i);//输出所有素数            count++;        }    printf("%d",count);//输出素数个数    return 0;}


1 0
原创粉丝点击