Pagini recente » Cod sursa (job #1640295) | Cod sursa (job #1856644) | Cod sursa (job #2022335) | Cod sursa (job #107053) | Cod sursa (job #420749)
Cod sursa(job #420749)
#include<fstream>
#define nmax 1000000
using namespace std;
unsigned long long n,a[nmax],b[nmax];
unsigned long long nr;
void rezolvare()
{
ofstream g("fractii.out");
unsigned long k=1,i;
for(i=2;i<=n;i++)
{
if(b[k]==i)
{nr+=b[k]-1; k++;}
else
{
unsigned long l=1,ok;
unsigned long long p,in;
in=i;
p=in;
while(in!=1)
{
if(in%b[l]==0)
{
ok=1;
while(in%b[l]==0)
in/=b[l];
}
if(ok)
p=(p-(p/b[l]));
l++;
ok=0;
}
nr+=p;
}
}
g<<nr*2+1;
g.close();
}
void prime()
{
unsigned long i,k=0,j;
for(i=1;i<=n;i++)
a[i]=i;
i=2;
while(i<=n)
{
while(!a[i]&&i<=n)
i++;
if(a[i])
{b[++k]=a[i]; a[i]=0;
j=i*i;
while(j<=n)
{a[j]=0; j+=i;}}
i++;
}
}
void citire()
{
ifstream f("fractii.in");
f>>n;
prime();
rezolvare();
f.close();
}
int main()
{
citire();
return 0;
}