Pagini recente » Cod sursa (job #67892) | Cod sursa (job #693900) | Cod sursa (job #3290382) | Cod sursa (job #372210) | Cod sursa (job #140450)
Cod sursa(job #140450)
#include <fstream.h>
#include <math.h>
ifstream f("fractii.in");
ofstream g("fractii.out");
long long prod,i,p,s,n,j,k,n_aux;
char prime[1000010];
long long phi[1000010];
long nmax=20;
int gasit;
int main(){
phi[1]=1;
f>>n;
for(j=0;j<=n;j++)prime[j]='0';
prime[n+1]='\0';
for (j=2;j<=n;j++)
if (prime[j]=='0'){
k=1;
while(j*k<=n){
prime[j*(++k)]='1';
}
}
for (i=2;i<=n;i++)
{ prod=1;gasit=0;
if (prime[i]=='0')prod*=(i-1);
else
{for(j=2;j<=i/2 &&!gasit;j++){
if (prime[j]=='0' && i%j==0){
p=0;gasit=1;
n_aux=i;
while (!(n_aux%j)){
n_aux/=j;p++;
}
if(p)prod*=(j-1)*pow(j,p-1)*phi[n_aux];
}
}}
phi[i]=prod;
}
/* for (i=0;i<n;i++)
g<<phi[i]<<endl;*/
for (i=1;i<=n;i++)
s+=phi[i]*2;
s--;
g<<s;
f.close();
g.close();
return 0;
}