由键盘输入两个正整数m,n,求最大公约数。
用辗转相除法,即将上一次的除数作为下一次的被除数,上一次的余数作为下一次的除数。
#include#include int main() { int m,n,a,b,temp,r; printf("请输入两个正整数:"); scanf("%d%d",&m,&n); if(m < n)//被除数必须大于除数,若小于,则交换 { temp = m; m = n; n = temp; } a = m; b = n;//m,n的值放到a,b r = a%b; while(r!=0) { a = b; b = r; r = a%b;//将上一次的除数作为下一次的被除数,将上一次的余数作为下一次的除数 } printf("%d",b); return 0; }
求最小公倍数
两个数的乘积/最大公约数=最小公倍数
#include#include int main() { int m,n,a,b,temp,r; printf("请输入两个正整数:"); scanf("%d%d",&m,&n); if(m < n)//被除数必须大于除数,若小于,则交换 { temp = m; m = n; n = temp; } a = m; b = n;//m,n的值放到a,b r = a%b; while(r!=0) { a = b; b = r; r = a%b;//将上一次的除数作为下一次的被除数,将上一次的余数作为下一次的除数 } printf("%dn",b);//最大公约数 printf("%d",m*n/b);//最小公倍数 return 0; }



