小明被一个问题给难住了,现在需要你帮帮忙。问题是:给出两个正整数,求出它们的最大公约数和最小公倍数。         
公约数和公倍数时间限制:1000 ms  |  内存限制:65535 KB难度:1
描述 
小明被一个问题给难住了,现在需要你帮帮忙。问题是:给出两个正整数,求出它们的最大公约数和最小公倍数。
输入
第一行输入一个整数n(0<n<=10000),表示有n组测试数据;
随后的n行输入两个整数i,j(0<i,j<=32767)。
输出
输出每组测试数据的最大公约数和最小公倍数
样例输入
样例输出
我用的编译器是CodeBlocks
我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
   | #include<cstdio>   #include<iostream>   using namespace std;   int main()   {       int n,a,b,r,s;       cin>>n;       while(n--)       {           cin>>a>>b;           s=a*b;           while(b!=0)               {                   r=a%b;                   a=b;                   b=r;               }       cout<<a<<" "<<s/a<<endl;       }   }
   | 
 
最优代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
   | #include<stdio.h>   int main()   {       unsigned int u,v,r,s,i,d;       scanf("%u",&s);       for(i=1;i<=s;i++)       {           scanf("%u%u",&u,&v);           d=u*v;           while(v!=0)           {               r=u%v;               u=v;               v=r;           }           printf("%u %u\n",u,d/u);       }       return 0;   }
   | 
 
共
同
进
步
O(∩_∩)O