一點一滴算法之素數篩選

找出1000之內(含1000)的所有素數的方法一個一個因子篩選

#include<stdio.h>
#include<math.h>
#define n 1000
int main()
{
    int i,j,prime[n+1];

    prime[0]=prime[1]=0;
    for(i=2;i<=n;i++)
    {
        prime[i]=1;
    }

   for(i=2;i*i<=n;i++)
    {
        if(prime[i])
        for(j=2*i;j<=n;j++)
            if(j%i==0)

        {
           prime[j]=0;
        }
    }
// for(i=2;i*i<=n;i++)//另一種篩選,篩選出 i 到n/i 的所有有 i爲因子的數  
// 
//    {
//        if(prime[i])//但還是會有重複 重複賦值  上面的是重複進行j%i操作
//        for(j=2;j<=n/i;j++)//對比結果發現  這一種方法要更快一點
//
//        {
//            prime[i*j]=0;
//
//        }
//    }
    for(i=2;i<=n;i++)
    {
           if(prime[i])
        printf ("%d ",i);
    }

1

2

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