C Exercises: Generate mersenne primes within a range of numbers
C Numbers: Exercise-33 with Solution
Write a program in C to generate Mersenne primes within a range of numbers.
Test DataInput a upper limit [range from 1 to upper limit]: 1000
Sample Solution:
C Code:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>
// Function to generate all primes up to 'n1'
void GenAllPrim(int n1, bool prarr1[])
{
// Initialize an array to mark all numbers as potential primes
for (int i = 0; i <= n1; i++)
prarr1[i] = true;
// Iterate through numbers and mark non-primes using the Sieve of Eratosthenes algorithm
for (int p = 2; p * p <= n1; p++)
{
if (prarr1[p] == true)
{
for (int i = p * 2; i <= n1; i += p)
prarr1[i] = false;
}
}
}
// Function to check Mersenne primes within the specified range 'nm'
void chkMerPrime(int nm)
{
bool prarr1[nm + 1]; // Array to store prime numbers within the range
GenAllPrim(nm, prarr1); // Generate all primes up to 'nm'
// Iterate through powers of 2 minus 1 within the specified range to check for Mersenne primes
for (int j = 2; ((1 << j) - 1) <= nm; j++)
{
long long num = (1 << j) - 1; // Calculate Mersenne number using the formula 2^j - 1
// Check if the calculated Mersenne number is a prime and print it
if (prarr1[num])
printf(" %lli ", num);
}
}
// Main function
int main()
{
int n;
printf("\n\n Generate Mersenne primes within a range of numbers:\n");
printf("--------------------------------------------------------\n");
printf(" Input an upper limit [range from 1 to upper limit]: ");
scanf("%d", &n); // Reading the upper limit from the user
printf(" Mersenne prime numbers are: \n");
chkMerPrime(n); // Call function to find Mersenne primes within the specified range
printf("\n\n");
return 0;
}
Sample Output:
Input a upper limit [range from 1 to upper limit]: 1000 Mersenne prime numbers are: 3 7 31 127
Visual Presentation:
Flowchart:
C Programming Code Editor:
Contribute your code and comments through Disqus.
Previous: Write a program in C to Check if a number is Mersenne number or not.
Next: Write a program in C to find narcissistic decimal numbers within a specific range.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://www.w3resource.com/c-programming-exercises/numbers/c-numbers-exercise-33.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics