法1:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int a, b;
printf("请输入两个数:");
scanf("%d %d", &a, &b);
int max = 0;
//假设最大公约数为两个值中的最小数
if (a > b) {
max = b;
}
else {
max = a;
}
while (1) {
if (a % max == 0 && b % max == 0) { // m和n同时可以整除max,则max为最大公约数
printf("最大公约数就是:%d", max);
break;
}
max--;
}
return 0;
}
法2:辗转相除法
24 / 18 = 1...6
18 / 6 = 3...0 (当余数为0时,该式子的除数就为最大公约数,该例子中为6)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int a, b;
printf("请输入两个数:");
scanf("%d %d", &a, &b);
int t;
while (a%b) {
t = a % b;
a = b;
b = t;
}
printf("最大公约数为:%d", b);
return 0;
}