Cod sursa(job #68147)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 26 iunie 2007 18:07:37
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<fstream.h>
long a[1000000],N;
void prim(){
for (long i=2;i<1000000;i++)
     if (a[i]==0)
	 for (long j=2*i;j<1000000-i;j+=i)
	     a[j]=1;
}
long  div (long i){
long x=i;
short ok=0;
long nr=0;
if (i%2==0){
   nr+=N-N/2;
while (i%2==0)
    i/=2;
    ok++;}
for (long d=3;d<=i/d;d+=2){
    if (i%d==0){
	nr+=N-N/d;
	ok++;
    while(i%d==0)
	i/=d;}}
    if (i>1) {
	nr+=N-N/i;
	ok++;}
    if (ok>1)
return nr+N/x-N;
return nr;
}
int parc(){
long long nr=N;
for (long i=2;i<=N;i++)
     if (a[i]==0)
	nr+=N-N/i;
     else
	nr+=div(i);
return nr;
}
int main(){
ifstream fin("fractii.in");
ofstream fout("fractii.out");
prim();
fin>>N;
fout<<parc();
fout<<"\n";
fin.close();
fout.close();
return 0;
}