Create a class called PrimeNumber that stores a prime number. The default constr
ID: 3823841 • Letter: C
Question
Create a class called PrimeNumber that stores a prime number. The default constructor
should set the prime number to 1. Add another constructor that allows the caller to
set the prime number. Also, add a function to get the prime number. Finally, overload
the prefix and postfix ++ and -- operators so they return a PrimeNumber object that
is the next largest prime number (for ++) and the next smallest prime number (for --).
For example, if the object 's prime number is set to 13, then ++13 should return a
PrimeNumber object whos prime number is 17. Test your class in main() by prompting
the user to enter a prime number and invoking your functions on that number.
Explanation / Answer
#include <iostream>
using namespace std;
class PrimeNumber
{
private:
int num;
bool isPrime(int num);
public:
PrimeNumber();
PrimeNumber(int val);
int get();
const PrimeNumber operator ++();
const PrimeNumber operator --();
};
PrimeNumber::PrimeNumber() : num(1)
{
}
PrimeNumber::PrimeNumber(int val) : num(val)
{
}
int PrimeNumber::get()
{
return num;
}
bool PrimeNumber::isPrime(int num)
{
for (int i = num-1; i > 1; i--)
{
if ((num % i) == 0)
return false;
}
return true;
}
const PrimeNumber PrimeNumber::operator ++()
{
int nextprime = num;
do
{
nextprime++;
} while (!isPrime(nextprime));
return PrimeNumber(nextprime);
}
const PrimeNumber PrimeNumber::operator --()
{
int previousprime = num;
do
{
previousprime--;
if (previousprime < 1)
{
return PrimeNumber(1);
}
} while (!isPrime(previousprime));
return PrimeNumber(previousprime);
}
MAIN FUNCTION
int main()
{
PrimeNumber p1, p2(13);
cout << p1.get() << endl;
cout << p2.get() << endl;
PrimeNumber p3 = p1++;
cout << p3.get() << endl;
PrimeNumber p4 = p2++;
cout << p4.get() << endl;
PrimeNumber p5 = p2--;
cout << p5.get() << endl;
cout << "Enter a character to quit." << endl;
char c;
cin >> c;
return 0;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.