2017年6月20日 星期二

算1000內的質數

#include <stdio.h>
#include <stdlib.h>
int is_prime(int n)
{ int i;
  if(n<=1)
  {return 0;}
  for(i=2;i<n;i++)
  {if(n%i==0)
   return 0;
  }
 return 1;
}

int main()
{ int i,t=1;
  for(i=2;i<1000;i++)
   { if(is_prime(i))
     { t++;
       printf("%4d",i);
       if(t>10)
       {t=1;
        printf("\n");
         }

     }
   }



    return 0;
}

===========================
Eratos 方法

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

int main()
{   int i,j,t=0;
    int prime[1001];
    for(i=2;i<=1000;i++)
    {prime[i]=1;}
    for(i=2;i*i<=1000;i++)
     {if(prime[i]==1)
       for(j=i*2;j<=1000;j++)
       { if(!prime[j]) continue;
         if(j%i==0) prime[j]=0;
        }
     }
     for(i=2;i<=1000;i++)
     {if(prime[i]==1)
       {printf("%4d",i);
        t++;
        if(t%10==0)
        {printf("\n");}
       }

       }

    return 0;
}


沒有留言:

張貼留言