Pagini recente » Cod sursa (job #2795409) | Cod sursa (job #1811691) | Cod sursa (job #906872) | Cod sursa (job #1977917) | Cod sursa (job #1693225)
#include <iostream>
#include <fstream>
#define MAX 1000000
using namespace std;
ifstream in ("fractii.in");
ofstream out ("fractii.out");
int phi[MAX+2];
bool prime[MAX+2];
void ciur_prime (int n){
int i, j;
fill_n(prime,MAX-1,1);
prime[0]=0;
prime[1]=0;
for (i=2; i*i <= n; i++){
if (prime[i]){
for (j=i; j*i <= n; j++){
prime[i*j]=0;
}
}
}
}
void totient (int n){
int i, j;
for (i=1; i <= n; i++) phi[i]=i;
for (i=1; i <= n; i++){
if (prime[i]){
for (j=i; j <=n; j+=i){
phi[j]-=phi[j]/i;
}
}
}
}
int main (){
int i, n;
unsigned long s=-1;
in >> n;
ciur_prime(n);
totient(n);
for (i=1; i <= n ; i++){
s=s + phi[i]*2;
}
out << s;
return 0;
}
/*spooky long shit
int gcd (int n, int m){
for (unsigned r=m%n; r ; m=n, n=r, r=m%n);
return n;
}
int main()
{
int j, n, i, t=-1;
in >> n;
for (i=1; i <=n; i++){
for (j=i; j <=n; j++)
if (gcd(i,j) == 1) t+=2;
}
cout << t;
return 0;
}
*/