素数筛选法,(谢谢学长)

//普通筛选法
/*0表示素数 
int prime[n];
void init(){
    for(int i=2;i<=n;i++){
        if(book[i]==0){
            prime[cnt++]=i;
            for(int j=i*2;j<=n;j+=i){
                book[j]=1;}
            }
        }
}

*/ 
/* 模板 
#include<stdio.h>  
#include<math.h>  
#define N 100000  
void main()   
{  
    int a[N];  //筛子数组  
    int i,num;  
    int minp,doub;  //minp筛选种子,doub倍数  
    int n=0;        //素数个数,用于输出格式控制  
    printf("input a num...");  
    scanf("%d",&num);  
    for(i=2;i<num;i++)    //建立筛子  
        a[i]=1;  
    minp=2;               //筛选种子初始化  
    while(minp<sqrt(num))       //完成整个筛选  
    {  
        doub=2*minp;         //倍数初始化  偶数被 
        while(doub<num)     //完成一轮筛选  
        {  
            a[doub]=0;       //筛去当前倍数  
            doub+=minp;      //计算下一个倍数  
        }  
        do                  //计算下一轮筛选种子  
        {  
            minp++;  
        }  
        while(a[minp]==0);  
    }  
*/

猜你喜欢

转载自www.cnblogs.com/leolaosao/p/9142136.html
今日推荐