NYOJ--40--公约数和公倍数

来源:互联网 发布:淘宝红号查询 编辑:程序博客网 时间:2024/04/26 03:36

公约数和公倍数

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

11 66

思路:要用辗转相除法来做。贴上自己之前写过的代码。

ac代码:

 #include<stdio.h>//#include<stdlib.h>int main(){   int a,b,n,k,r,i;   scanf("%d",&n);   for(i=1;i<=n;i++)   {scanf("%d %d",&a,&b);   k=a*b;   while(b!=0)   { r=a%b;   a=b;   b=r;}printf("%d %d\n",a,k/a);}    //system("pause");    return 0;}         
再贴上一段自己刚写的代码。
#include<stdio.h>int gcd(int a,int b){if(a<b){int t=a;a=b;b=t;}if(b==0)return a;elsereturn gcd(b,a%b);} int main(){int n,m,cnt;scanf("%d",&cnt);while(cnt--){scanf("%d%d",&n,&m);int min=gcd(n,m);int max=n*m/min;printf("%d %d\n",min,max); } return 0;}

0 0
原创粉丝点击