方法一、
#include <stdio.h>
int main()
{
int m = 24;
int n = 18;
//scanf("%d%d", &m, &n);
int min = (m > n ? n : m);
while (1)
{
if (m%min == 0 && n%min == 0)
{
printf("最大公约数是: %d\n", min);
break;
}
min--;
}
return 0;
}
方法二、辗转相除法
例子:求(319,377):
∵ 319÷377=0(余319)
∴(319,377)=(377,319);
∵ 377÷319=1(余58)
∴(377,319)=(319,58);
∵ 319÷58=5(余29)
∴ (319,58)=(58,29);
∵ 58÷29=2(余0)
∴ (58,29)= 29;
∴ (319,377)=29
按照上面的方式设m,n 让m%n表示取余过程,用m%n == 0 判断 n 是否为最大公约数
#include <stdio.h>
int main()
{
int m = 18;
int n = 24;
//scanf("%d%d", &m, &n);
int r = 0;
//辗转相除法
while (r = m%n)
{
m = n;
n = r;
}
printf("最大公约数:%d\n", n);
return 0;
}
结果