# include <iostream>
# include <cstdio>
# include <string.h>
using namespace std;
typedef long long ll;
bool u[50000];
ll su[50000],num;
ll gcd (ll a,ll b)
{
return b?gcd(b,a%b):a;
}
void prepare()
{
ll i,j;
memset(u,true,sizeof(u));
for(i=2;i<=50000;i++)
{
if(u[i])
su[++num]=i;
for(j=1;j<=num;j++)
{
if(i*su[j]>50000)
break;
u[i*su[j]]=false;
if(i%su[j]==0)
break;
}
}
}
ll phi(ll x)
{
ll ans=1;
int i,j,k;
for(i=1;i<=num;i++)
if(x%su[i]==0)
{
j=0;
while(x%su[i]==0)
{
++j;
x/=su[i];
}
for(k=1;k<j;k++)
ans=ans*su[i]%100000000711;
ans=ans*(su[i]-1)%100000000711;
if(x==1) break;
}
if(x>1)
ans=ans*(x-1)%100000000711;
return ans;
}
int main()
{
prepare();
int n;
ll ans=1;
while(scanf("%d",&n)==1&&n>0)
{
ans=phi(n);
printf("%d\n",(int )ans);
}
return 0;
}
poj2407小于n的相对素数
最新推荐文章于 2022-11-27 14:15:48 发布