Pagini recente » Cod sursa (job #2090484) | Cod sursa (job #734898) | Cod sursa (job #1995881) | Cod sursa (job #132251) | Cod sursa (job #140535)
Cod sursa(job #140535)
#include <iostream.h>
#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 phi[1000010];
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+1)<=n){
prime[j*(++k)]='1';
}
}
for (i=2;i<=n;i++)
{ prod=1;gasit=0;
if (prime[i]=='0')phi[i]=(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++;
}
phi[i]=(j-1)*phi[n_aux]*(i/n_aux)/j;
}
}}
}
for (i=1;i<=n;i++)
s+=phi[i]*2;
s--;
g<<s;
f.close();
g.close();
return 0;
}