Pagini recente » Cod sursa (job #1526484) | Cod sursa (job #1960438) | Cod sursa (job #1523224) | Cod sursa (job #2396814) | Cod sursa (job #2110)
Cod sursa(job #2110)
#include <fstream>
#include <iostream>
#include <math.h>
using namespace std;
ifstream f1("fractii.in");
ofstream f2("fractii.out");
bool a[1000001];
int n;
/*int cmmdc(int a, int b)
{
int rest;
while (b!=0)
{
rest=a%b;
a=b;
b=rest;
}
return a;
}*/
int eratostene()
{
int m,i,j;
f1>>n;
m=n;
a[1]=true;
for (i=4; i<=m; i+=2)
a[i]=true;
for (i=3; i<=m; i+=2)
for (j=i*2; j<=m; j+=i)
a[j]=true;
return 0;
}
int main(void)
{
int suma2,simplu,i,j;
unsigned long int s;
eratostene();
s=0;
s=2*n-n/2;
for (i=3; i<=n; i++)
if (!a[i]) s+=n-n/i;
else
{
suma2=0;
simplu=1;
if (i%2==0)
{
suma2+=n/2;
simplu*=2;
}
for (j=3; j<=sqrt(i)+10; j+=2)
if (i%j==0 && (!a[j]))
{
suma2+=n/j;
simplu*=j;
}
if (!a[simplu]) s+=n-n/simplu;
else s+=n-suma2+n/simplu;
}
f2<<s;
f1.close();
f2.close();
return 0;
}