欧拉函数

公式:φ(N)=N(1-1/p1)(1-1/p2)...(1-1/pn)(p1,p2...pn为N的除一以外的质因数)

//我的代码

#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int sum=n;
for(int i = 2;i <= n / i;i ++)
{
if(n % i == 0)
{
sum /= i * (i - 1);//公式变形sum=sum*(1-1/n),i/n是小数,所以化为sum=sum/n*(n-1)
while(n % i == 0)
{
n /= i;
}
}
}
cout<<sum<<endl;
return 0;
}

//std代码

#include<iostream>
#include<cstring>
using namespace std;
long long n,sum;
int main()
{
cin>>n;
sum=n;
int i=1;
while(n!=1)
{
i++;
if(n%i==0)
{
sum=sum/i*(i-1);
n=n/i;
}
while(n%i==0)
{
n=n/i;
}
}
cout<<sum;
return 0;
}

原文地址:https://www.cnblogs.com/Chri-K/p/13749018.html