解题思路
首先我们知道这两个数的乘积等于这两个数的最大公约数乘最小公倍数,故只需求出一个既可求另一个,这里我们用更相减损法求解最大公因数。
更相减损法
也称欧几里得算法它的基本思想是:用较大的数除以较小的数,得到余数,再用余数去除除数,直到余数为零为止:此时除数就是最大公约数。
例如:求出24 与 35的最大公约数:
36÷24=1 余 12
24÷12=2余 0
故 24 与 35 的 最大公约数为12。
由于余数一定会小于除数,故可用递归进行反复运算可得最大公约数,从而求出最大公倍数代码如下:
参考代码:
#include<stdio.h> int shu(int a,int b){ int c,d,max,min; max=(a>b)?a:b; min=(a<b)?a:b; c=max%min; if(c==0) return min; if(c!=0) return shu(min,c); }//最大公约数 int main(){ int a,b,c,d; scanf("%d%d",&a,&b); d=shu(a,b); c=(a*b)/d; printf("%d %d",d,c); return 0; }
0.0分
11 人评分
汽水瓶 (C语言代码)浏览:664 |
P1002 (C语言代码)浏览:1019 |
C语言程序设计教程(第三版)课后习题1.6 (C++代码)浏览:909 |
打水问题 (C语言代码)浏览:1147 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:539 |
简单的a+b (C语言代码)浏览:878 |
【计算球体积】 (C语言代码)浏览:1158 |
sizeof的大作用 (C语言代码)浏览:1590 |
字符逆序 (C语言代码)浏览:541 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:611 |