给定两个整数 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; }