
- C++ Basics
- C++ Home
- C++ Overview
- C++ Environment Setup
- C++ Basic Syntax
- C++ Comments
- C++ Data Types
- C++ Variable Types
- C++ Variable Scope
- C++ Constants/Literals
- C++ Modifier Types
- C++ Storage Classes
- C++ Operators
- C++ Loop Types
- C++ Decision Making
- C++ Functions
- C++ Numbers
- C++ Arrays
- C++ Strings
- C++ Pointers
- C++ References
- C++ Date & Time
- C++ Basic Input/Output
- C++ Data Structures
- C++ Object Oriented
- C++ Classes & Objects
- C++ Inheritance
- C++ Overloading
- C++ Polymorphism
- C++ Abstraction
- C++ Encapsulation
- C++ Interfaces
C++ Program to Generate Prime Numbers Between a Given Range Using the Sieve of Sundaram
This is C++ program to implement Sieve of Sundaram to Generate Prime Numbers Between Given Range. This algorithm was discovered in 1934 by Sundaram.
Algorithm
Begin printPrimes(n) Here we find out primes smaller than n, we reduce n-2 to half. We call it New. New = (n-2)/2; Create an array marked[n] that is going to be used to separate numbers of the form i+j+2ij from others where 1 <= i <= j Initialize all entries of marked[] as false. Mark all numbers of the form i + j + 2ij as true where 1 <= i <= j for i=1 to New a) j = i; b) Loop While (i + j + 2*i*j) 2, then print 2 as first prime. Remaining primes are of the form 2i + 1 where i is index of NOT marked numbers. So print 2i + 1 for all i such that marked[i] is false. End
Example Code
#include <bits/stdc++.h> using namespace std; int SieveOfSundaram(int m) { int N= (m-2)/2; bool marked[N + 1]; memset(marked, false, sizeof(marked)); for (int i=1; i<=N; i++) for (int j=i; (i + j + 2*i*j) <= N; j++) marked[i + j + 2*i*j] = true; if (m > 2) cout << 2 << " "; for (int i=1; i<=N; i++) if (marked[i] == false) cout << 2*i + 1 << " "; } int main(void) { int m = 10; SieveOfSundaram(m); return 0; }
Output
2 3 5 7
- Related Articles
- C++ Program to Implement Wheel Sieve to Generate Prime Numbers Between Given Range
- C++ Program to Implement Segmented Sieve to Generate Prime Numbers Between Given Range
- C++ Program to Implement Sieve of eratosthenes to Generate Prime Numbers Between Given Range
- C++ Program to Implement Sieve of Atkin to Generate Prime Numbers Between Given Range
- Program to print prime numbers in a given range using C++ STL
- C++ Program to Generate Randomized Sequence of Given Range of Numbers
- Java Program to get prime numbers using the Sieve of Eratosthenes algorithm
- Print prime numbers in a given range using C++ STL
- Write a Golang program to find prime numbers in a given range
- Program to find Prime Numbers Between given Interval in C++
- Sum of prime numbers between a range - JavaScript
- Python - Find the number of prime numbers within a given range of numbers
- How to generate prime numbers using Python?
- Python program to generate random numbers within a given range and store in a list?
- Java program to generate random numbers within a given range and store in a list

Advertisements