la manera que usas para comprobar si los dos numeros tienen solamente el 1 como divisor comun es correcto, pero el problema dice que el algoritmo mas eficiente para hacerlo es el de euclides, indirectamente te dice que utilices este porque si los numeros son muy grandes el algoritmo que planteaste va a demorar mucho... luego dice que, si los dos numeros son primos, entonces, aparte de tener solamente el 1 como divisor comun, el numero menor tiene que ser primo. Te faltaria comprobar si el numero menor es primo
en la funcion
mcd no inicializaste la variable
primos, en caso de que el if de siempre falso, nunca va a tomar un valor y la funcion puede retornar cualquier cosa:
Código C++:
Ver originalbool mcd (int n, int m){
bool primos= true;
for (int i = 2; i <= n; i++)
if (n % i == 0 && m % i == 0) //comprueba si tienen un divisor comun
primos = false;
return primos;
}
aca te dejo el algoritmo de euclides:
parte practica teoria