Basic Prime Checker, C++

Published: March 24, 2018 | Last Modified: May 13, 2025

Tags: prime numbers

Categories: C++



Exactly what it sounds like.

#include <iostream>
#include <cmath>

using std::cout;
using std::cin;

int main() {

  int myNumber = 0;
  bool prime = true;

  //The user is prompted to input a positive integer.
  cout << "Input a positive integer: ";
  //The user inputs a positive integer.
  cin >> myNumber;

  /*
  * The program checks for special cases at the beginning to simplify the process.
  * If the number is divisible by any single-digit prime, the number is not prime.
  */
  if(myNumber == 0 || myNumber == 1){prime = false;}
  if ( myNumber > 2 && myNumber % 2 == 0 ) {prime = false;}
  if ( myNumber > 3 && myNumber % 3 == 0 ) {prime = false;}
  if ( myNumber > 5 && myNumber % 5 == 0 ) {prime = false;}
  if ( myNumber > 7 && myNumber % 7 == 0 ) {prime = false;}

  //If the number passes that test, continue checking.
  if(prime){
    /*
    *The program only needs to check up to the square root of myNumber because
    * if myNumber is not prime, it can be factored into i*i.
    */
    for (int i = sqrt(myNumber); i > 3; i--)
    {
      if(prime){
        if(myNumber % i == 0){
          prime = false;
        }
      }else{
        //No need to keep looping if we've already determined it's not prime.
        break;
      }
    }
  }

  //Feedback to the user before the program ends.
  if(prime){
    cout << myNumber << " IS prime!";
  }
  else{
    cout << myNumber << " is NOT prime!";
  }

  return 0;
}