【1131】C/C++经典程序训练1---最大公约数与最小公倍数
C/C++经典程序训练1---最大公约数与最小公倍数
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入两个整数,求它们的最大公约数与最小公倍数。
输入
输入两个整数,两个整数之间用空格分开。
输出
第一行输出最大公约数;
第二行输出最小公倍数。
第二行输出最小公倍数。
示例输入
64 48
示例输出
16 192
此题虽然简单,但是要掌握应用的辗转相除法
#include <stdio.h>
int main()
{
int a,b,t,r,a1,b1,z;
scanf("%d %d",&a,&b);//输入两个数
if(a>b)
{
t=a;
a=b;
b=t;
}//为两个数由小到大排序
a1=a;
b1=b;
r=b%a;//r为b除以a的余数
while(r!=0)
{
b=a;
a=r;
r=b%a;
}//辗转相除法求最大公约数
printf("%d\n",a);
z=a1*b1;
printf("%d\n",z/a);//两个数的最小公倍数 为它们的乘积 除以 它们的最大公约数
return 0;
}
int main()
{
int a,b,t,r,a1,b1,z;
scanf("%d %d",&a,&b);//输入两个数
if(a>b)
{
t=a;
a=b;
b=t;
}//为两个数由小到大排序
a1=a;
b1=b;
r=b%a;//r为b除以a的余数
while(r!=0)
{
b=a;
a=r;
r=b%a;
}//辗转相除法求最大公约数
printf("%d\n",a);
z=a1*b1;
printf("%d\n",z/a);//两个数的最小公倍数 为它们的乘积 除以 它们的最大公约数
return 0;
}