方式一:辗转相除法
如果 m 和 n 取模为 t(不为零),
那么把 n 的值赋值给 m,把 t 的值赋值给 n,
然后再进行一次循环,直到取模为零,t 被赋值为零,循环结束。
int m = 0;
int n = 0;
int t = 0;
scanf("%d %d", &m, &n);
//如果m和n取模为t,
//那么把n的值赋值给m,把t的值赋值给n,
//然后再进行一次循环,直到取模为零,t被赋值为零,循环结束。
while (t=m%n) {
m = n;
n = t;
}
printf("最大公约数:%d", n);
方法二:假设最大公约数法
找出 m 和 n 之中的最大值,然后让 m 和 n 取余最大值 max
如果 m 和 n 取余 max 同时等于0,那就找到最大公约数了。
如果不等于0,那就让最大值 max 减一,再循环取余一次…
//找出m和n之中的最大值,然后让m和n取余最大值max
//如果m和n取余max同时等于0,那就找到最大公约数了。
//如果不多于0,那就让最大值max-1,再循环取余一次...
int m = 0;
int n = 0;
int max = 0;
scanf("%d %d", &m, &n);
if (m > n) {
max = m;
}
else {
max = n;
}
while (1) {
if (m % max == 0 && n % max == 0) {
printf("%d", max);
break;
}
max--;
}