change the main function, put values of l for lower bound and m for higher bound
ID: 3797704 • Letter: C
Question
change the main function, put values of l for lower bound and m for higher bound. You need to allocate static boolean array prime with size m+1. To have predefined numbers instead of user input
#include
#include
using namespace std;
void run_game(bool *prime, int l, int m)
{
int number = 0;
for (int p = 2; p*p <= m; p++)
{
if (prime[p] == true)
{
// Update all the multiples of p
for (int i = p * 2; i <= m; i += p)
prime[i] = false;
}
}
for (int p = l; p <= m; p++)
if (prime[p])
number++;
cout << "There are " << number << " prime numbers between " << l << " and " << m <<":"< // Print all prime numbers
for (int p = l; p <= m; p++)
if (prime[p])
cout << p << " ";
cout << endl;
}
int main()
{
int l,m;
bool check = false;
string user;
do {
cout << "Please input lower bound and upper bound and hit enter (e.g. 10 100): " << endl;
cin >> l;
cin >> m;
// initialize entire boolean array to true //
bool *prime = new bool[m + 1];
memset(prime, true, m + 1);
run_game(prime, l, m);
cout << "Do you want to continue or not? Please answer yes or no and hit enter:";
cin >> user;
if (user == "yes")
{
check = true;
}
else if (user == "no")
break;
else
continue;
} while (check == true);
return 0;
}
Explanation / Answer
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
void run_game(bool *prime, int l, int m)
{
int number = 0;
for (int p = 2; p*p <= m; p++)
{
if (prime[p] == true)
{
// Update all the multiples of p
for (int i = p * 2; i <= m; i += p)
prime[i] = false;
}
}
for (int p = l; p <= m; p++)
if (prime[p])
number++;
cout << "There are " << number << " prime numbers between " << l << " and " << m <<":"; // Print all prime numbers
for (int p = l; p <= m; p++)
if (prime[p])
cout << p << " ";
cout << endl;
}
int main()
{
//put values of l for lower bound and m for higher bound
int l=40,m=66;
bool check = false;
string user;
do {
cout << "lower bound is: "<<l<<" and upper bound is: " << m<<endl;
//allocate static boolean array prime with size m+1. //
static bool *prime = new bool[m + 1];
memset(prime, true, m + 1);
run_game(prime, l, m);
cout<<endl;
cout << "Do you want to continue or not? Please answer yes or no and hit enter:";
cin >> user;
if (user == "yes")
{
check = true;
}
else if (user == "no")
break;
else
continue;
} while (check == true);
return 0;
}
========================
output sample for l=44 and m=66
lower bound is: 40 and upper bound is: 66
There are 6 prime numbers between 40 and 66:41 43 47 53 59 61
Do you want to continue or not? Please answer yes or no and hit enter:
-----------------------
output sample for l=12 and m=20
lower bound is: 12 and upper bound is: 20
There are 3 prime numbers between 12 and 20:13 17 19
Do you want to continue or not? Please answer yes or no and hit enter:
---------------------------------------------------------------------------------------------
If you have any query, please feel free to ask.
Thanks a lot.
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.