用埃氏筛法生成质数表

#include<bits/stdc++.h>
using namespace std;

bool book[100000001];

// 用埃氏筛法生成质数表
void prime(int b) {
    //初始化,默认全部都是质数
    memset(book, true, sizeof(book));
    book[1]=false;//1不是质数
    int n=sqrt(b);
    for (int i=2;i<=n;i++) {
        if (book[i]) {
            //质数的倍数绝对不是质数,把所有质数的倍数全部设为false
            for (int j=2;j<=b/i;j++)
                book[i*j]=false;  // i*j<=b 
        }
    }
}

  

原文地址:https://www.cnblogs.com/jaszzz/p/12888359.html