TheAlgorithms-C-Plus-Plus/math/primes_up_to_billion.cpp
Ayaan Khan 2aec4efdd3
fix: integer overflow due to multiplication fixed (#886)
* formatting source-code for 72c365dcd34d9776fac3e2b58b41891b3619b02e

* Fixed Bug [munmap_chunck() core dumped]

* formatting source-code for b06bbf4dc6c46a3284d7852bb570438384eef4ef

* fixed line spacing

* fixed line spacing

* fixed documentation

* closed the paranthesis of line 3

* formatting source-code for 8233eda8894f46785f288e72c639d201852f6096

* Bug Fix heap sort [Fresh Implementation]

* formatting source-code for e464ddac3688834ce46c59bada5ad3fddbfa2254

* Bug Fix heap sort [Fresh Implementation]

* formatting source-code for 803981c831b36bf940d3fa2a901340cb0029717b

* switched to normal functions from lambda

* formatting source-code for ced5dcd6c4db53ece27d22ecd1dd1c1fcce6afb0

* Added template and test cases

* formatting source-code for 7c8617fa46d41481c68ae2ae9d4f6a89ca42a4ff

* fixed docs

* fixed line spacing in tests

* fix docs

* Multiplication result may overflow 'int' before it is converted to 'long'.

* fixed cpplint long -> int64

* fixed compiler error

Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
2020-06-23 23:50:45 +05:30

37 lines
881 B
C++

/**
* @file
* @brief Compute prime numbers upto 1 billion
* @see prime_numbers.cpp sieve_of_eratosthenes.cpp
*/
#include <cstring>
#include <iostream>
/** array to store the primes */
char prime[100000000];
/** Perform Sieve algorithm */
void Sieve(int64_t n) {
memset(prime, '1', sizeof(prime)); // intitize '1' to every index
prime[0] = '0'; // 0 is not prime
prime[1] = '0'; // 1 is not prime
for (int64_t p = 2; p * p <= n; p++) {
if (prime[p] == '1') {
for (int64_t i = p * p; i <= n; i += p)
prime[i] = '0'; // set all multiples of p to false
}
}
}
/** Main function */
int main() {
Sieve(100000000);
int64_t n;
std::cin >> n; // 10006187
if (prime[n] == '1')
std::cout << "YES\n";
else
std::cout << "NO\n";
return 0;
}