sgu 102模拟欧拉函数

时间:2023-03-09 07:51:35
sgu 102模拟欧拉函数

感觉自己弱爆了,做做SGU吧。。。

#include<iostream>
#include<cmath> //欧拉函数
using namespace std;
int euler(int n)
{
int m=n; int ans=n;
for(int i=2;i<=sqrt(n*1.0);i++) //注意等于号,
{
if(m%i==0)
{
ans=ans*(i-1)*1.0/i;
while(m%i==0)m/=i;
}
}
if(m!=1)ans=ans*(m-1)/m;
return ans;
}
int main()
{
int n;
while(cin>>n)
{
cout<<euler(n)<<endl;
}
}