公约数和公倍数

来源:互联网 发布:城市人才争夺战知乎 编辑:程序博客网 时间:2024/04/30 12:50

公约数和公倍数

时间限制: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 main(){ int n, i, j, k, c, temp; scanf("%d", &n); while(n--) {  scanf("%d%d", &i, &j);  k = i * j;  if(i < j)  { temp = i; i = j; j = temp;  }   while(j!=0)//保证除数不等于0  {   c = i % j;   i = j;   j = c;  }  printf("%d %d\n",i, k / i);//两个数之积为最大公约数和最小公倍数之积 } return 0;}


 

下面是最优算法

 

 #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;}        


 

 

原创粉丝点击