您的位置:首页 > 其它

最大公约数和最小公倍数

2013-04-16 11:58 239 查看
输入第一行输入一个整数n(0<n<=10000),表示有n组测试数据;

随后的n行输入两个整数i,j(0<i,j<=32767)。输出输出每组测试数据的最大公约数和最小公倍数




我的代码:

#include <stdio.h>
void swap(int *j,int *k)
{
	int n;
	if(*j>=*k) return;
	else
	{
		n=*j;
		*j=*k;
		*k=n;
	}

}
void cal(int j,int k)
{
	int s=j*k;
	int temp;
	swap(&j,&k);
	while(k!=0)
	{	
		temp=j%k;
		j=k;
		k=temp;
	}
	printf("%d %d\n",j,s/j);

	
}

int main()
{
	int o,j,k;
	scanf("%d",&o);
	while(o--)
	{
		scanf("%d %d",&j,&k);
		if(j==k) printf("%d %d\n",j,k);
		else
		{
			cal(j,k);
		}
	}
	return 0;
}

最优代码:

01.
#include<stdio.h>


02.
int

main()

03.
{

04.
unsigned
int
u,v,r,s,i,d;

05.
scanf
(
"%u"
,&s);

06.
for
(i=1;i<=s;i++)

07.
{

08.
scanf
(
"%u%u"
,&u,&v);

09.
d=u*v;

10.
while
(v!=0)

11.
{

12.
r=u%v;

13.
u=v;

14.
v=r;

15.
}

16.
printf
(
"%u
 %u\n"
,u,d/u);

17.
}

18.
return

0;

19.
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: