Pagini recente » Cod sursa (job #2001887) | Cod sursa (job #645740) | Cod sursa (job #2456271) | Cod sursa (job #2410012) | Cod sursa (job #126568)
Cod sursa(job #126568)
//
// File: newmain.cc
// Author: catalaur
//
// Created on January 19, 2008, 1:20 AM
//
#include <stdio.h>
#include <iostream.h>
int prime(long n){
long i, j, nr = 1 , pas , frac=1;
long prim1[1000000];
int p[1000000];
long prim2[1000000];
for (i = 2; i <= n; ++i) {
if (p[i] == 0) {
pas=1;
for (j = i + i; j <= n; j += i) {
pas++;
p[j] = 1;
prim1[j]=i;
prim2[j]=pas;
}
}
}
for (i=2;i<=n; i++){
if (p[i]==0){
frac+=(i-1)*2;
}else{
if (p[prim1[i]]==0 and p[prim2[i]] == 0){
frac+=(i-2*i/prim2[i]+i/prim1[i]*prim2[i]);
}else{
while (p[prim2[i]] != 0 and (prim2[i]/prim1[i]) == 0){
prim2[i] = prim2[i]/prim1[i];
}
frac+=(i-i/prim2[i])*2;
}
}
}
cout<<frac;
}
int main() {
FILE *fi,*fo;
long n,i,j;
fi = fopen("fractii.in" , "r");
fscanf(fi , "%d" , &n);
fclose(fi);
prime(n);
fo = fopen("fractii.out" , "w");
//fprintf(fo , "%1d" , frac);
return 0;
}