Pagini recente » Cod sursa (job #1483446) | Cod sursa (job #738772) | Cod sursa (job #1792139) | Cod sursa (job #81785) | Cod sursa (job #883170)
Cod sursa(job #883170)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream f("fractii.in");
ofstream g("fractii.out");
long long n,i,j,p,s=1,nr,k,t,sf;
long long eul[100005],prime[1000000];
bool ciur[3000005];
long long powp(long long a,long long b)
{
long long e,sol=1,aa;
aa=a;
for (e=0;(1<<e)<=b;e++)
{
if (((1<<e)&b)>0)
sol=(sol*aa);
aa=(aa*aa);
}
return sol;
}
int main ()
{
f>>n;
prime[++prime[0]]=2;
for (i=4;i<=n;i+=2)
ciur[i]=1;
for (i=3;i<=n;i+=2){
if (!ciur[i])
prime[++prime[0]]=i;
for (j=i*i;j<=n;j+=2*i)
ciur[j]=1;
}
for (i=2;i<=n;i++) {
if (!ciur[i])
eul[i]=i-1;
else {
eul[i]=1;
nr=i;
p=1;
while (nr>1) {
k=0;
while (nr%prime[p]==0) {
k++;
nr/=prime[p];
}
if (k>0)
{
eul[i]*=(prime[p]-1);
t=powp(prime[p],k-1);
eul[i]*=t;
}
p++;
}
}
s+=2*eul[i];
}
g<<s<<",";
}