Question #181423

Write a function named "g_c_d" that takes two positive integer arguments and returns as its value the greatest common divisor of those two integers. If the function passed an argument that is not positive (i.e., less than zero), then the function should return the value 0 as a sentinel value to indicate that an error occurred. Thus, for example:

cout << g_c_d(40,50) << endl;     // will print 10

cout << g_c_d(256,625) << endl; // will print 1

cout << g_c_d(42,6) << endl;      // will print 6

cout << g_c_d(0,32) << endl;     // will print 0

cout << g_c_d(10,-6) << endl;   // will print 0

Expert's answer

#include <iostream>
using std::cout;
using std::endl;

int g_c_d(int n ,int m) 
{
if (n<=0 || m<=0)
    {
       return 0;
    }
while (n != m) 
{
    if (n > m)
    {
        n = n - m;
    }
    else
    {
        m = m - n;
    }
}
return n;
}

int main()
{
    // test example
    cout << g_c_d(40, 50) << endl;     // will print 10
    cout << g_c_d(256, 625) << endl; // will print 1
    cout << g_c_d(42, 6) << endl;      // will print 6
    cout << g_c_d(0, 32) << endl;     // will print 0
    cout << g_c_d(10, -6) << endl;   // will print 0
    return 0;
}

LATEST TUTORIALS
APPROVED BY CLIENTS