Pagini recente » Cod sursa (job #1848782) | Cod sursa (job #2352630) | Cod sursa (job #2434135) | Cod sursa (job #2466685) | Cod sursa (job #2418774)
#include <fstream>
#include <cmath>
using namespace std;
unsigned long long diviz(unsigned long long n)
{
for(int i=2; i<=sqrt(n); ++i)
if(n%i==0) return i;
return 1;
}
unsigned long long rl(unsigned long long n,unsigned long long p)
{
unsigned long long nr=1;
while(p>0)
{
if(p%21)
{
nr*=n;
--p;
}
else
{
n*=n;
p/=2;
}
}
return nr;
}
ifstream cin("fractii.in");
ofstream cout("fractii.out");
int main()
{
unsigned long long i,n,d,k,p,eul;
cin>>n;
unsigned long long cnt=1;
for(i=2; i<=n; ++i)
{
d=diviz(i);
k=i;p=0;
eul=1;
if(d==1) eul=i-1;
else
{
while(k>1)
{
p=0;
while(k%d==0)
{
++p;
k/=d;
}
if(p) eul*=(d-1)*rl(d,p-1);
d=diviz(k);
if(d==1) d=k;
}
}
cnt+=2*eul;
}
cout<<cnt;
return 0;
}