poj 2480
有意思的欧拉。注意精度。
代码:
#include<iostream>
#include<fstream>
using namespace std;
int a[50001];
long long n;
void read(){
// ifstream cin("in.txt");
long long i,j,k;
for(i=4;i<=50000;i+=2)
a[i]=1;
for(i=3;i<=50000;i+=2)
if(a[i]==0)
for(j=2*i;j<=50000;j+=i)
a[j]=1;
while(cin>>n){
double ans=n;
for(i=2;i*i<=n;i++)
if(a[i]==0&&n%i==0)
{
j=0;
while(n%i==0)
{
j++;
n/=i;
}
ans*=1+j*(1-1./i);
}
if(n>1) ans*=1+1-1./n;
printf("%.0lf\n",ans);
}
}
int main(){
read();
return 0;
}
浙公网安备 33010602011771号