任务描述
题目描述:写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。
编程要求
请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,变量类型使用long long int。
输入
两个正整数
输出
最大公约数 最小公倍数
如果输入的数中包含负数,则输出Input Error
测试说明
样例输入:
6 15
样例输出:
3 30
提示:
- 负数没有最大公约数和最小公倍数;
- 最大公约数和最小公倍数一定为正数,不可以为负数;
- 需要考虑代码运行效率,否则会评测超时。
代码如下
#include <stdio.h>
long long int fun1(long long int a,long long int b)
{
long long int c;
c=a%b;
while(c!=0)
{
a=b;
b=c;
c=a%b;
}
return(b);
}
long long int fun2(long long int a,long long int b,long long int d)
{
long long int c;
c=a*b/d;
return(c);
}
int main()
{
long long int a,b,min,max;
scanf("%lld %lld",&a,&b);
max = a;
min = b;
if(a>0&&b>0)
{
if(b>=a)
{
max=b;
min=a;
a=fun1(max,min);
printf("%lld",a);
b=fun2(max,min,a);
printf(" %lld",b);
}
if(b<a)
{
max=a;
min=b;
a=fun1(max,min);
printf("%lld",a);
b=fun2(max,min,a);
printf("% lld",b);
}
}
if(a<0||b<0)
{
printf("Input Error");
}
return 0;
}