Pagini recente » Rezultatele filtrării | Rezultatele filtrării | Cod sursa (job #1845351) | Atasamentele paginii Profil icosmin | Cod sursa (job #68147)
Cod sursa(job #68147)
#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;
}