#include<cstdio>
using namespace std;
const int N = 1e6+10 ;
int phi[N], prime[N];
int tot;//tot计数,prime[N]存的质数
void Euler()
{
phi[1] = 1;
for(int i = 2; i < N; i ++)
{
if(!phi[i])
{
phi[i] = i-1;
prime[tot ++] = i;
}
for(int j = 0; j < tot && 1ll*i*prime[j] < N; j ++)
{
if(i % prime[j]) phi[i * prime[j]] = phi[i] * (prime[j]-1);
else
{
phi[i * prime[j] ] = phi[i] * prime[j];
break;
}
}
}
}
int main()
{
Euler();
}
若求a^b%p 上式即可
欧拉函数,用φ(n)表示
欧拉函数是求小于等于n的数中与n互质的数的数目