// Nicolas Ruano           CS1A          Chapter 6, P. 375, #21 
 
// 
 
/******************************************************************************* 
* VERIFY IF A GIVEN NUMBER IS A PRIME NUMBER. 
 
* ______________________________________________________________________________ 
 
* The program prompts the user for a number, ensures it’s  
* greater than 1, then checks if it is divisible by any number 
* from 2 to (number – 1). If so, it’s not prime; if not, it’s  
* prime. The result is then displayed. 
 
* Computation is based on the formula: 
 
* For a number n: 
* Prime(n)= 
* False, if n≤1, 
* False, if there exists an i such that 2≤i<n and n  mod  i=0, 
* True, Otherwise 
 
* Where: 
* n  mod  i = 0 means “n is evenly divisible by i.” 
 
* ______________________________________________________________________________ 
 
* INPUT 
*   num                int    The number entered by user. 
* 
* 
* OUTPUT 
*   isPrime(num)       bool   Control which message is printed 
*   num                int    The number entered by user. 
*******************************************************************************/ 
#include <iostream>   // Needed for input and output 
using namespace std; 
 
// Function to check if a number is prime 
bool isPrime(int number) { 
    if (number <= 1) { 
        return false; // Numbers less than or equal to 1 are not prime 
 
    } 
 
    // Check for factors between 2 and number - 1 
    for (int i = 2; i < number; i++) { 
        if (number % i == 0) { 
            return false; // Found a divisor, so it's not prime 
 
        } 
    } 
 
    return true; // No divisors found, it's prime 
} 
 
int main() { 
    int num; 
 
    cout << "Enter a number: "; 
    cin >> num; 
 
    if (isPrime(num)) { 
        cout << num << " is a prime number." << endl; 
    } else { 
        cout << num << " is not a prime number." << endl; 
    } 
 
    return 0; 
} 
				Ly8gTmljb2xhcyBSdWFubyAgICAgICAgICAgQ1MxQSAgICAgICAgICBDaGFwdGVyIDYsIFAuIDM3NSwgIzIxIAoKLy8gCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAKKiBWRVJJRlkgSUYgQSBHSVZFTiBOVU1CRVIgSVMgQSBQUklNRSBOVU1CRVIuIAoKKiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gCgoqIFRoZSBwcm9ncmFtIHByb21wdHMgdGhlIHVzZXIgZm9yIGEgbnVtYmVyLCBlbnN1cmVzIGl04oCZcyAgCiogZ3JlYXRlciB0aGFuIDEsIHRoZW4gY2hlY2tzIGlmIGl0IGlzIGRpdmlzaWJsZSBieSBhbnkgbnVtYmVyIAoqIGZyb20gMiB0byAobnVtYmVyIOKAkyAxKS4gSWYgc28sIGl04oCZcyBub3QgcHJpbWU7IGlmIG5vdCwgaXTigJlzICAKKiBwcmltZS4gVGhlIHJlc3VsdCBpcyB0aGVuIGRpc3BsYXllZC4gCgoqIENvbXB1dGF0aW9uIGlzIGJhc2VkIG9uIHRoZSBmb3JtdWxhOiAKCiogRm9yIGEgbnVtYmVyIG46IAoqIFByaW1lKG4pPSAKKiBGYWxzZSwgaWYgbuKJpDEsIAoqIEZhbHNlLCBpZiB0aGVyZSBleGlzdHMgYW4gaSBzdWNoIHRoYXQgMuKJpGk8biBhbmQgbuKAiiBtb2TigIogaT0wLCAKKiBUcnVlLCBPdGhlcndpc2UgCgoqIFdoZXJlOiAKKiBu4oCKIG1vZOKAiiBpID0gMCBtZWFucyDigJxuIGlzIGV2ZW5seSBkaXZpc2libGUgYnkgaS7igJ0gCgoqIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAKCiogSU5QVVQgCiogICBudW0gICAgICAgICAgICAgICAgaW50ICAgIFRoZSBudW1iZXIgZW50ZXJlZCBieSB1c2VyLiAKKiAKKiAKKiBPVVRQVVQgCiogICBpc1ByaW1lKG51bSkgICAgICAgYm9vbCAgIENvbnRyb2wgd2hpY2ggbWVzc2FnZSBpcyBwcmludGVkIAoqICAgbnVtICAgICAgICAgICAgICAgIGludCAgICBUaGUgbnVtYmVyIGVudGVyZWQgYnkgdXNlci4gCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIAojaW5jbHVkZSA8aW9zdHJlYW0+ICAgLy8gTmVlZGVkIGZvciBpbnB1dCBhbmQgb3V0cHV0IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAKCi8vIEZ1bmN0aW9uIHRvIGNoZWNrIGlmIGEgbnVtYmVyIGlzIHByaW1lIApib29sIGlzUHJpbWUoaW50IG51bWJlcikgeyAKICAgIGlmIChudW1iZXIgPD0gMSkgeyAKICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE51bWJlcnMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDEgYXJlIG5vdCBwcmltZSAKCiAgICB9IAoKICAgIC8vIENoZWNrIGZvciBmYWN0b3JzIGJldHdlZW4gMiBhbmQgbnVtYmVyIC0gMSAKICAgIGZvciAoaW50IGkgPSAyOyBpIDwgbnVtYmVyOyBpKyspIHsgCiAgICAgICAgaWYgKG51bWJlciAlIGkgPT0gMCkgeyAKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBGb3VuZCBhIGRpdmlzb3IsIHNvIGl0J3Mgbm90IHByaW1lIAoKICAgICAgICB9IAogICAgfSAKCiAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gZGl2aXNvcnMgZm91bmQsIGl0J3MgcHJpbWUgCn0gCgppbnQgbWFpbigpIHsgCiAgICBpbnQgbnVtOyAKCiAgICBjb3V0IDw8ICJFbnRlciBhIG51bWJlcjogIjsgCiAgICBjaW4gPj4gbnVtOyAKICAgIAogICAgaWYgKGlzUHJpbWUobnVtKSkgeyAKICAgICAgICBjb3V0IDw8IG51bSA8PCAiIGlzIGEgcHJpbWUgbnVtYmVyLiIgPDwgZW5kbDsgCiAgICB9IGVsc2UgeyAKICAgICAgICBjb3V0IDw8IG51bSA8PCAiIGlzIG5vdCBhIHByaW1lIG51bWJlci4iIDw8IGVuZGw7IAogICAgfSAKCiAgICByZXR1cm4gMDsgCn0g