Pagini recente » Cod sursa (job #2673152) | Cod sursa (job #2910732) | Cod sursa (job #2256485) | Cod sursa (job #2364817) | Cod sursa (job #2198784)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("fractii.in");
ofstream g("fractii.out");
short int ciur[1000001];
int n;
long long int fractii = 1;
int p = 1, phi = 1, d = 2;
int main()
{
f >> n;
//2 = numar neprim
//1 = numar prim
ciur[1] = 2;
ciur[2] = 1;
for(int i = 3 ; i <= n ; i += 2)
{
if(ciur[i] == 0)
{
ciur[i] = 1;
}
else{
for(int j = i+i ; j <= n ; j += i)
{
ciur[j] = 2;
}
}
}
for(int i = 2 ; i <= n ; i++)
{
d = 2;
int ci = i;
if(ciur[i] == 1)
{
fractii += 2*(i-1);
}
else{
while(ci / d >= 1){
if(ci % d == 0){
while(ci % d == 0){
ci /= d;
p *= d;
}
p /= d;
phi *= (d-1)*p;
p = 1;
}
if(d == 2) d++;
else d+= 2;
}
fractii += 2*phi;
phi = 1;
}
}
g << fractii;
return 0;
}