求質數——埃拉托色篩選法

#include<stdio.h>
#include<stdlib.h>

int main(int argc, char *argv[])
{
    int i = 2, j = 0;
    long N = atol(argv[1]);
    int *a = malloc(N*sizeof(int));
    if (NULL == a)
    {
        printf("There is no enough memory!\n");
        return -1;
    }
    for(i=2; i<N; i++)
        a[i] = 1;

    for(i=2; i<N; i++)
    {
        if(a[i])
        {
            for(j=i; j*i<N; j++)
            {
                a[i*j] = 0;
            }
        }
    }

    for(i=2; i<N; i++)
    {
        if(a[i])
            printf("%4d ", i);
    }

    printf("\n");

    return 0;

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章