素数筛

#include <stdio.h>
#include <math.h>

const int MAXN=1e6+10;
int prime[MAXN]={2,3,5};

//素数筛
void is_prime()
{
    int i,j;
    int flag=0;
    int gcd=2;
    int k=3;
    for(i = 7;i < MAXN;i += gcd){
        flag = 0;
        gcd = 6 - gcd;

        for(j = 0;prime[j] * prime[j] <= i;j++) 
        {
            if(i%prime[j] == 0)    //把所有素数除一遍就可以了,节省时间。
            {
                flag=1;
                break;
            }
        }
        if(!flag)
            prime[k++]=i;
    }
}
 

你可能感兴趣的:(素数筛)