Pagini recente » Cod sursa (job #1819282) | Cod sursa (job #2936198) | Cod sursa (job #1973186) | Cod sursa (job #2363253) | Cod sursa (job #778411)
Cod sursa(job #778411)
#include <cstdio>
#include <cmath>
unsigned int Eratosthenes (unsigned int n)
{
++n;
unsigned int prime_numbers(1), current_prime, multiple;
bool *numbers(new bool [n]( )), *prime(numbers + 3);
const bool *const END(numbers + n);
while (prime < END)
{
if (!*prime)
{
++prime_numbers;
for (current_prime = prime - numbers, multiple = current_prime * 3, current_prime <<= 1 ; multiple < n ; multiple += current_prime)
numbers[multiple] = true;
}
prime += 2;
}
delete [ ] numbers;
return prime_numbers;
}
int main (void)
{
std::freopen("ciur.in","r",stdin);
std::freopen("ciur.out","w",stdout);
unsigned int n;
std::scanf("%u",&n);
std::printf("%u\n",Eratosthenes(n));
std::fclose(stdin);
std::fclose(stdout);
return 0;
}