欧拉筛素数(顺便求欧拉函数)模板

来源:互联网 发布:淘宝 css 布局框架 编辑:程序博客网 时间:2024/05/22 03:17
#include <algorithm>#include <iostream>#include <cstdio>using namespace std;#define debug(x) cerr << #x << "=" << x << endl;const int MAXN = 10000000 + 10;const int MAXNUM = MAXN - 2;int prime[MAXN],vis[MAXN],phi[MAXN],cnt,n,m;void pri() {    for(int i=2; i<=MAXNUM; i++) {        if(!vis[i]) {            prime[++cnt] = i;            phi[i] = i-1;        }        for(int j=1; j<=cnt && i*prime[j] <= MAXNUM; j++) {            vis[i*prime[j]] = 1;            if(i%prime[j] == 0) {                phi[i*prime[j]] = phi[i] * prime[j];                break;            }            else                phi[i*prime[j]] = phi[i] * (prime[j]-1);        }    }}int main() {    scanf("%d %d", &n, &m);    vis[1] = 1;    pri();    for(int i=1; i<=m; i++) {        int xxx;        scanf("%d", &xxx);        if(!vis[xxx]) printf("Yes\n");        else printf("No\n");    }           return 0;}