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;
    }
}


原文地址:https://www.cnblogs.com/yezekun/p/3925732.html