// Arup Guha
// 10/12/2011
// Written in COP 3223 as an illustration of functions.
#include <stdio.h>

int getInput(void);
int isPrime(int n);

int main(void) {

    // Get the user's input value.
    int value = getInput();

    // Print out whether or not that value is prime.
    if (isPrime(value))
        printf("Your number, %d, is prime.\n", value);
    else
        printf("Your number, %d, is NOT prime.\n", value);

    return 0;
}

// Precondition: n is positive.
// Postcondition: Returns 1 if n is prime, 0 otherwise.
int isPrime(int n) {

    // The smallest prime is 2.
    if (n < 2)
       return 0;

    // Try dividing n by each number from 2 to n-1.
    int div;
    for (div = 2; div < n; div++)
        if (n%div == 0)
            return 0;

    // If we get here, n must be prime.
    return 1;
}

// Precondition: None.
// Postcondition: Returns the first positive integer entered by the user.
int getInput(void) {

    int n;

    // Loop until a positive integer is entered.
    while (1) {
        printf("Enter an positive integer.\n");
        scanf("%d", &n);

        // Time to get out of the loop.
        if (n > 0)
            break;
        printf("Sorry, that is not a positive integer.\n");
    }

    return n;
}

