Pagini recente » Cod sursa (job #2771180) | Cod sursa (job #2919162) | Cod sursa (job #572155) | Cod sursa (job #535947) | Cod sursa (job #372429)
Cod sursa(job #372429)
#include <fstream>
#include <iostream>
using namespace std;
int prime[200000], nrprime, e[1000001];
void eratostene(){
e[0]=e[1]=1;
for(int i=1;i<=1000;i++)
if(e[i]==0)
for(int j=2;i*j<=1000000;j++)
e[i*j]=1;
for(int i=1;i<=1000000;i++)
if(e[i]==0)
prime[++nrprime]=i;
}
int fi(int n){
int produs=n;
int p,d=1;
while(n>1){
p=0;
while(n%prime[d]==0)
n /= prime[d], p++;
if(p)
produs -= produs/prime[d];
d++;
if(prime[d]*prime[d] > n && n>1)
{
produs -= produs/n;
n=1;
}
}
return produs;
}
int main(){
eratostene();
ifstream fin("fractii.in");
int n;
fin>>n;
long long int sum=1;
for(int i=2;i<=n;i++){
//cout<<i<<" "<<fi(i)<<"\n";
sum+= 2 * fi(i);
}
ofstream fout("fractii.out");
fout<<sum<<endl;
return 0;
}