NYOJ 40 公约数和公倍数 2013年8月19日

来源:互联网 发布:靠谱的淘宝小样店 编辑:程序博客网 时间:2024/06/01 10:40

公约数和公倍数

时间限制: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 
//方法一:# include <stdio.h>//最大公约数int gcd (int a,int b){if (b==0)return a;elsereturn gcd(b,a%b);}//最小公倍数int lcm (int a,int b){return a/gcd(a,b)*b;}int main (){int n, a, b;scanf ("%d",&n);while (n--){scanf ("%d%d",&a,&b);printf ("%d %d\n",gcd(a,b),lcm(a,b));}return 0;}

//方法二:# include <stdio.h>int main (){int n, a, b, c, d;scanf ("%d",&n);while (n--){scanf ("%d%d",&a,&b);d = a*b;//最大公约数while (b!=0){c = a%b;a = b;b = c;}d = d/a;printf ("%d %d",a,d);}return 0;}


 

//方法三:# include <stdio.h>int main (){int n, a, b, c, i, k;scanf ("%d",&n);while (n--){scanf ("%d%d",&a,&b);if (a>b){c = a;a = b;b = c;}for (i=a;i>0;i--){if (a%i==0 && b%i==0)break;}k = a*b/i;printf ("%d %d\n",i,k);}return 0;}



 

 

原创粉丝点击