Write a C++ program that takes an input integer and determines whether it is a prime number or not. Your program should display a message indicating whether the input number is prime or not. The program should utilize an efficient algorithm to determine the prime status of the input number. Your code should be well-documented and include clear comments explaining your approach. The program should also handle invalid user input (e.g. non-integer input).
This prompt doesn't seem malicious.