重铸华农荣光 我辈义不容辞
The twentieth day - Euler Function
先除后乘,数据不会越界(int);先乘后除,开long long可以过
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--){
int x;
cin>>x;
int ans=x;
for(int i=2;i<=x/i;i++)
{
if(x%i==0)
{
ans=ans/i*(i-1);
while(x%i==0) x/=i;
}
}
if(x>1) ans=ans/x*(x-1);
cout<<ans<<endl;
}
return 0;
}