素数筛选再优化模板

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

int set[10000000]={0};

int p[5000000];

void fun(int n)

{

     int t=(int)sqrt(n+1);

     for(int i=3;i<=t;i+=2)

     {

         if(set[i/2])

            continue;

         int k=i*i,p=i+i;

         for(int j=k;j<=n;j+=p)

         {

             set[j/2]=1;

         }

     }

     int count=0;

     p[++count]=2;

     t=(n+1)/2;

     for(int i=1;i<t;i++)

     {

          if(set[i]==0)

             p[++count]=i+i+1;

     }

     for(int i=1;i<count;i++)

     {

              printf("%d\n",p[i]);

     }

}

int main()

{

    int n;

    scanf("%d",&n);

    fun(n);

    //system("pause");

    return 0;

}

你可能感兴趣的:(优化)