Cod sursa(job #3732)
Utilizator | Data | 28 decembrie 2006 11:50:20 | |
---|---|---|---|
Problema | Fractii | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.46 kb |
#include <stdio.h>
char* prime;
int main()
{
int n, i, j;
scanf("%d", &n);
unsigned long long count, x;
prime = new char[(n / 2)];
for(i = 0; i <= n / 2; i++)
{
prime[i] = 1;
}
count = 1 + ((unsigned long long)n)*(n - 1);
for(i = 2; i <= n/ 2; i++)
{
if(prime[i])
{
x = (n / i);
count -= (x)*(x-1);
for(j = i*2; j <= n / 2; j+= i)
{
prime[j] = 0;
}
}
}
printf("%I64d\n", count);
}