找出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