C++ 1. Define a class named PrimeNumber that stores a prime number. The default
ID: 3804140 • Letter: C
Question
C++
1. Define a class named PrimeNumber that stores a prime number. The default constructor should set the prime number to 1.
2. Add another constructor that allows the caller to set the prime number.
3. Add a function to get the prime number.
4. 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 invoking ++ should return a PrimeNumber object whose prime number is set to 17. Create an appropriate test program for the class.
Explanation / Answer
#include <iostream>
#include <math.h>
using namespace std;
// Prime Number class
class PrimeNumber {
private:
int number; // prime number
// Common method to determine whether the given number is prime or not
bool isPrime(int num)
{
bool isprime = false;
int i = 2;
for(; i <= sqrt(num); i++)
{
// break it if the number is divisble
if((num% i) == 0)
{
break;
}
}
// if there is no divisor less than sqrt of a number then that number is a prime (best approach)
if(i> sqrt(num))
{
isprime = true;
}
return isprime;
}
public:
// default constructor
PrimeNumber(){
number = 1;
}
// overloaded constructor with primenumber as input
PrimeNumber(int num){
number = num;
}
// method to Get Prime number
int GetPrimeNumber(void)
{
return number;
}
// overloaded prefix ++ operator
PrimeNumber operator++ () {
while(true)
{
number = number + 1;
if(isPrime(number))
break;
}
return PrimeNumber(number);
}
// overloaded postfix ++ operator
PrimeNumber operator++( int ) {
// save the orignal prime number
PrimeNumber pm(number);
while(true)
{
number = number + 1;
if(isPrime(number))
break;
}
// return old original prime number
return pm;
}
// overloaded prefix -- operator
PrimeNumber operator-- () {
while(true)
{
number = number - 1;
if(isPrime(number))
break;
}
return PrimeNumber(number);
}
// overloaded postfix -- operator
PrimeNumber operator--( int ) {
// save the orignal prime number
PrimeNumber pm(number);
while(true)
{
number = number - 1;
if(isPrime(number))
break;
}
// return old original prime number
return pm;
}
};
int main() {
PrimeNumber pm1, pm2(23);
// Printing pre&post increment of first prime number
cout << "Prefix increment of " << pm1.GetPrimeNumber() << " is: ";
++pm1;
cout << pm1.GetPrimeNumber() << endl;
cout << "Postfix increment of " << pm1.GetPrimeNumber() << " is: ";
pm1++;
cout << pm1.GetPrimeNumber() << endl;
// Printing pre&post decrement of first prime number
cout << "Prefix decrement of " << pm1.GetPrimeNumber() << " is: ";
--pm1;
cout << pm1.GetPrimeNumber() << endl;
cout << "Postfix decrement of " << pm1.GetPrimeNumber() << " is: ";
pm1--;
cout << pm1.GetPrimeNumber() << endl << endl;
// Printing pre&post increment of second prime number
cout << "Prefix increment of " << pm2.GetPrimeNumber() << " is: ";
++pm2;
cout << pm2.GetPrimeNumber() << endl;
cout << "Postfix increment of " << pm2.GetPrimeNumber() << " is: ";
pm2++;
cout << pm2.GetPrimeNumber() << endl;
// Printing pre&post decrement of second prime number
cout << "Prefix decrement of " << pm2.GetPrimeNumber() << " is: ";
--pm2;
cout << pm2.GetPrimeNumber() << endl;
cout << "Postfix decrement of " << pm2.GetPrimeNumber() << " is: ";
pm2--;
cout << pm2.GetPrimeNumber() << endl;
return 0;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.