Posted on
#include <iostream>
#include <stdexcept>

using namespace std;

int largest_proper_divisor(int n) {
    if (n == 0) {
        throw invalid_argument("largest proper divisor is not defined for n=0");
    }
    if (n == 1) {
        throw invalid_argument("largest proper divisor is not defined for n=1");
    }
    for (int i = n/2; i >= 1; --i) {
        if (n % i == 0) {
            return i;
        }
    }
    return -1; // will never happen
}

void process_input(int n) {
    try{
        int d = largest_proper_divisor(n);
        cout << "result=" << d << endl;
    } catch (const std::invalid_argument& ia) {
        cout << ia.what() << endl;
    }
    
    cout << "returning control flow to caller\n";
}


int main() {
    int n;
    cin >> n;
    process_input(n);
    return 0;
}

Leave a Reply

Your email address will not be published. Required fields are marked *