给定两个整数 a,b的值,r表示取模后余下的数。若a%b==0,则直接输出b为最大公约数;若a%b!=0,则进入循环,一直取模求余,直到a%b==0为止。
例如:a = 24,b = 32;
r = a%b =24;(r!=0进入循环)
a = 32, b = 24;
r = a%b = 8 ;(r!=0进入循环)
a = 24,b = 8;
r = a%b =0;(r==0跳出循环)
输出最大公约数:8
代码如下:
#include <stdio.h>
int main()
{
int a = 24;
int b = 32;
int r = 0;
while ((r = a%b) != 0)
{
a = b;
b = r;
}
printf("最大公约数为:%d\n", b);
return 0;
}
补充:最小公倍数*最大公约数=两个数之积
因此可通过上式求解最小公倍数。
代码如下:
#include <stdio.h>
int main()
{
int a = 24;
int b = 32;
int tmp = a*b;
int r = 0;
while ((r = a%b) != 0)
{
a = b;
b = r;
}
printf("最大公约数为:%d\n", b);
printf("最小公倍数为:%d\n",tmp/b );
return 0;
}