最大公约数与最小公倍数

来源:互联网 发布:被偏爱的有恃无恐 知乎 编辑:程序博客网 时间:2024/06/16 08:23
辗转相除法求两个数的最大公约数的步骤如下:
先用小的一个数除大的一个数,得第一个余数;
再用第一个余数除小的一个数,得第二个余数;
又用第二个余数除第一个余数,得第三个余数;
这样逐次用后一个数去除前一个余数,直到余数是0为止.那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数).
例如求1515和600的最大公约数,
第一次:用600除1515,商2余315;
第二次:用315除600,商1余285;
第三次:用285除315,商1余30;
第四次:用30除285,商9余15;
第五次:用15除30,商2余0.

1515和600的最大公约数是15.  记为gcd(a,b);

最小公倍数=a*b/g(a,b);


公约数和公倍数

时间限制:1000 ms  |  内存限制:65535 KB
难度:1
描述
小明被一个问题给难住了,现在需要你帮帮忙。问题是:给出两个正整数,求出它们的最大公约数和最小公倍数。
输入
第一行输入一个整数n(0<n<=10000),表示有n组测试数据;
随后的n行输入两个整数i,j(0<i,j<=32767)。
输出
输出每组测试数据的最大公约数和最小公倍数
样例输入
36 612 1133 22
样例输出
6 61 13211 66

ac代码:

#include <cstdio>using namespace std;int min_submultiple(int a,int b){int t=a%b;if(t==0)return b;elsemin_submultiple(b>t?b:t,b>t?t:b);}int main(){int x,a,b,m,n;scanf("%d",&x);while(x--){scanf("%d %d",&a,&b);m=min_submultiple(a>b?a:b,a>b?b:a);n=a*b/m;printf("%d %d\n",m,n);}return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机电用得快怎么办 身份证过期7个月怎么办 耳洞总是有臭味怎么办 口琴24孔吹不准怎么办 狗狗反胃吐白沫怎么办 2岁宝宝牙齿被腐蚀怎么办 2岁宝宝乳牙腐蚀怎么办 1岁宝宝门牙腐蚀怎么办 3岁宝宝有蛀牙怎么办 3岁宝宝乳牙腐蚀怎么办 三岁宝宝烂牙怎么办 宝宝牙被腐蚀了怎么办 嗓子声音变粗了怎么办 玩网游钱被骗了怎么办 家里的白墙脏了怎么办 月经弄到床垫上怎么办 出租房墙面太脏怎么办 苹果6镜头模糊了怎么办 6s前摄像头进灰怎么办 手机镜头进灰了怎么办 6s摄像头进灰了怎么办 7plus摄像头进灰怎么办 苹果喇叭进灰了怎么办 苹果7摄像头进灰怎么办 锁眼里胶水堵了 怎么办 锁眼被牙签堵了怎么办 锁孔被胶水堵了怎么办 快手上不了同城怎么办 昌珉入伍宋茜怎么办 嗓子里卡了鱼刺怎么办 在餐厅吃到虫子怎么办 在餐厅吃出虫子怎么办 孕妇被虫子咬了怎么办 吃外卖吃到虫子怎么办 杯子盖拧错位了怎么办 身边有吸毒的人怎么办 如果牛难产了怎么办要 牛难产拉不出来怎么办 老公发现老婆有外遇怎么办 睡眠不好半夜老是醒怎么办 拔完智齿肿了怎么办