# HG changeset patch # User Eris Caffee # Date 1433365351 18000 # Node ID 8f82abf1b732d3a6e9547d95ff55f349881d4273 # Parent 707cbc379d260e2d2ac2dc7ee14a306e55909925 Sieve of Eratosthenes in C++ diff -r 707cbc379d26 -r 8f82abf1b732 sieve_of_eratosthenes/sieve.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sieve_of_eratosthenes/sieve.cpp Wed Jun 03 16:02:31 2015 -0500 @@ -0,0 +1,42 @@ +#include +#include +#include +#include + +void sieve( int limit, std::vector &primes ) { + std::vector nums; + for ( int i = 0; i <= limit; ++i ) + nums.push_back(1); + nums[0] = nums[1] = 0; + + + float sq = sqrt(limit); + for ( int i = 2; i <= sq; ++i ) { + if ( nums[i] != 0 ) { + for ( int j = i*i; j <= limit; j += i ) + nums[j] = 0; + } + } + + for ( int i = 2; i <= limit; ++i ) + if ( nums[i] != 0 ) + primes.push_back( i ); + + } + + + +int main( int argc, char **argv ) { + int limit; + + std::stringstream ss(argv[1]); + ss >> limit; + + std::vector primes; + + sieve( limit, primes ); + + for ( int i=0; i < primes.size(); ++i ) + std::cout << primes[i] << std::endl; + + }