题目描述:
西安交通大学大计基第十四周第四题
输入两个正整数,输出其中最大公约数和最小公倍数。
输入输出格式:
输入:从键盘输入两个正整数
输出:最大公约数和最小公倍数。
样例:
输入:
15,25
输出:
最大公约数是5
最小公倍数是75
- 求p和q的最大公约数的欧几里德算法:
(1)输入p和q(p>q)
(2)计算p和q的余数r
(3)r=0时,q即为最大公约数,转第(4)步
否则,令p=q,q=r,继续执行第(2)步
(4)输出q
- p和q的最小公倍数为p乘以q再除以它们的最大公约数。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
Euclid(int p, int q);
int main()
{
int p, q;
scanf("%d,%d", &p, &q);
int n=Eculid(p, q);
int a = p * q / n;
printf("最大公约数是%d\n最小公倍数是%d",n,a);
return 0;
}
Eculid(int p, int q)
{
int r = 1;
int s = 0;
while (r != 0)
{
if (p > q)
{
r = p % q;
p = q;
s = q;
q = r;
}
if (q >= p)
{
r = q % p;
q = p;
s = p;
p = r;
}
}
return s;
}