Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <cstring>#include <iostream>using namespace std;#include <vector>#define ll long longll const Maxn = 5000005;bool Isprime [Maxn];ll phi[Maxn];vector<ll> primelist;void init(){memset(Isprime,0,sizeof(Isprime));memset(phi,0,sizeof(phi));int primecount = 0;for(int i=2;i<Maxn;i++){if(Isprime[i]==0){primelist.push_back(i);primecount++;phi[i]=i-1;}for(int j=0;j<primelist.size();j++){if(i*primelist[j]>=Maxn) break;Isprime[i*primelist[j]] = 1;if(i%primelist[j]==0){// primeList[j]是i的约数,φ(n*p) = φ(n) * pphi[ i * primelist[j] ] = phi[i] * primelist[j];break;}else{phi[ i * primelist[j] ] = phi[i] * (primelist[j] - 1);