## C++ || Find The Prime, Perfect & All Known Divisors Of A Number Using A For, While & Do/While Loop

This program was designed to better understand how to use different loops which are available in C++.

This program first asks the user to enter a non negative number. After it obtains a non negative integer from the user, the program will determine if the inputted number is a prime number or not, aswell as determine if the user inputted number is a perfect number or not. After it obtains its results, the program will display to the screen if the user inputted number is prime/perfect number or not. The program will also display a list of all the possible divisors of the user inputted number via cout.

REQUIRED KNOWLEDGE FOR THIS PROGRAM

```Do/While Loop While Loop For Loop Modulus Basic Math - Prime Numbers Basic Math - Perfect Numbers Basic Math - Divisors```

``` Is It Prime or Perfect? List All Possible Divisors C++ #include <iostream> #include <iomanip> using namespace std; int main () { int userInput = 0; int divisor = 0; int sumOfDivisors = 0; char response ='n'; do{ // this is the start of the do/while loop cout<<"Enter a number: "; cin >> userInput; // if the user inputs a negative number, do this code while(userInput < 0) { cout<<"ntaSorry, but the number entered is less than the allowable limit. Please try again"; cout<<"nnEnter an number: "; cin >> userInput; } cout << "nInput number: " << userInput; // for loop adds sum of all possible divisors for(int counter=1; counter <= userInput; ++counter) { divisor = (userInput % counter); if(divisor == 0) { // this will repeatedly add the found divisors together sumOfDivisors += counter; } } // uses the 'sumOfDivisors' variable from ^ above for loop to // check if 'userInput' is prime if(userInput == (sumOfDivisors - 1)) { cout<<endl; cout << userInput << " is a prime number."; } else { cout<<endl; cout << userInput << " is not a prime number."; } // uses the 'sumOfDivisors' variable from ^ above for loop to // check if 'userInput' is a perfect number if (userInput == (sumOfDivisors - userInput)) { cout<<endl; cout << userInput << " is a perfect number."; } else { cout<<endl; cout << userInput << " is not a perfect number."; } cout << "nDivisors of " << userInput << " are: "; // for loop lists all the possible divisors for the // 'userInput' variable by using the modulus operator for(int counter=1; counter <= userInput; ++counter) { divisor = (userInput % counter); if(divisor == 0 && counter !=userInput) { cout << counter << ", "; } } cout << "and "<< userInput; // asks user if they want to enter new data cout << "nntDo you want to input another number?(Y/N): "; cin >> response; // creates a line seperator if user wants to enter new data cout.fill('-'); cout<<left<<setw(30)<<""<<right<<setw(30)<<""<<endl; // resets variable back to zero if the user wants to enter new data sumOfDivisors=0; }while(response =='y' || response =='Y'); // ^ End of the do/while loop. As long as the user chooses // 'Y' the loop will keep going. // It stops when the user chooses the letter 'N' return 0; }// http://programmingnotes.org/ 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 #include <iostream>#include <iomanip>using namespace std; int main (){   int userInput = 0;   int divisor = 0;   int sumOfDivisors = 0;   char response ='n';      do{ // this is the start of the do/while loop    cout<<"Enter a number: ";    cin >> userInput;       // if the user inputs a negative number, do this code    while(userInput < 0)      {    cout<<"ntaSorry, but the number entered is less than the allowable limit. Please try again";    cout<<"nnEnter an number: ";    cin >> userInput;    }       cout << "nInput number: " << userInput;     // for loop adds sum of all possible divisors    for(int counter=1; counter <= userInput; ++counter)    {    divisor = (userInput % counter);    if(divisor == 0)    {    // this will repeatedly add the found divisors together    sumOfDivisors += counter;    }    }       // uses the 'sumOfDivisors' variable from ^ above for loop to    // check if 'userInput' is prime    if(userInput == (sumOfDivisors - 1))    {    cout<<endl;    cout << userInput << " is a prime number.";    }    else    {    cout<<endl;    cout << userInput << " is not a prime number.";    }     // uses the 'sumOfDivisors' variable from ^ above for loop to    // check if 'userInput' is a perfect number    if (userInput == (sumOfDivisors - userInput))    {    cout<<endl;    cout << userInput << " is a perfect number.";    }    else    {    cout<<endl;    cout << userInput << " is not a perfect number.";    }       cout << "nDivisors of " << userInput << " are: ";     // for loop lists all the possible divisors for the    // 'userInput' variable by using the modulus operator    for(int counter=1; counter <= userInput; ++counter)    {    divisor = (userInput % counter);    if(divisor == 0 && counter !=userInput)    {    cout << counter << ", ";    }    }    cout << "and "<< userInput;       // asks user if they want to enter new data    cout << "nntDo you want to input another number?(Y/N): ";    cin >> response;     // creates a line seperator if user wants to enter new data    cout.fill('-');    cout<<left<<setw(30)<<""<<right<<setw(30)<<""<<endl;     // resets variable back to zero if the user wants to enter new data    sumOfDivisors=0;   }while(response =='y' || response =='Y');    // ^ End of the do/while loop. As long as the user chooses   // 'Y' the loop will keep going.   // It stops when the user chooses the letter 'N'    return 0;}// http://programmingnotes.org/ ```

QUICK NOTES:
The highlighted lines are sections of interest to look out for.

The code is heavily commented, so no further insight is necessary. If you have any questions, feel free to leave a comment below.

Once compiled, you should get this as your output:

`Enter a number: 8128`

``` Input number: 8128 8128 is not a prime number. 8128 is a perfect number. Divisors of 8128 are: 1, 2, 4, 8, 16, 32, 64, 127, 254, 508, 1016, 2032, 4064, and 8128 Do you want to input another number?(Y/N): y ------------------------------------------------------------ Enter a number: 6 Input number: 6 6 is not a prime number. 6 is a perfect number. Divisors of 6 are: 1, 2, 3, and 6 Do you want to input another number?(Y/N): y ------------------------------------------------------------ Enter a number: 241 Input number: 241 241 is a prime number. 241 is not a perfect number. Divisors of 241 are: 1, and 241 Do you want to input another number?(Y/N): y ------------------------------------------------------------ Enter a number: 2012 Input number: 2012 2012 is not a prime number. 2012 is not a perfect number. Divisors of 2012 are: 1, 2, 4, 503, 1006, and 2012 ```

``` Do you want to input another number?(Y/N): n ------------------------------------------------------------ Press any key to continue . . .```