计算两个整数的最大公约数和最小公倍数
(1)源代码
#include <stdio.h>
int main()
{
int a,b;
int min;
int max=0;
int i;
int x;
scanf("%d,%d",&a,&b);
min=a<b ? a : b;
for(i=2;i<=min;i++){
if(a%i==0 && b%i==0){
max=i;
}
}
printf("gys=%d,",max);
x=a>b ? a : b;
for(i=x;i>0;i++){
if(i%a==0 && i%b==0){
printf("gbs=%d",i);
break;
}
}
return 0;
}
(2)运行示例
(3)代码思路
- 首先,使用
scanf
函数从标准输入读取两个整数,并赋值给 a
和 b
变量,用逗号分隔。 - 然后,声明五个整数变量
min
,max
,i
,x
和 y
,并将 max
初始化为0,表示最大公约数的初始值。 - 接着,使用一个三目运算符
?:
判断 a
和 b
的大小,如果 a
小于 b
,就将 min
赋值为 a
,否则就将 min
赋值为 b
,表示两个数中较小的那个。 - 然后,使用一个
for
循环,从2开始,每次加1,直到 min
为止,即遍历所有可能的公约数。在循环中,执行下面的代码:
- 使用一个
if
语句判断 a
和 b
是否能被 i
整除,即是否是公约数。如果是,就将 max
赋值为 i
,表示更新最大公约数的值。
- 接着,使用
printf
函数输出 max
变量的值,用 gys=%d,
的格式,表示输出最大公约数,其中 %d
代表 max
的值,后面跟一个逗号。 - 然后,使用一个三目运算符
?:
判断 a
和 b
的大小,如果 a
大于 b
,就将 x
赋值为 a
,否则就将 x
赋值为 b
,表示两个数中较大的那个。 - 接着,使用一个
for
循环,从 x
开始,每次减1,直到0为止,即遍历所有可能的公倍数。在循环中,执行下面的代码:
- 使用一个
if
语句判断 i
是否能被 a
和 b
整除,即是否是公倍数。如果是,就使用 printf
函数输出 i
变量的值,用 gbs=%d
的格式,表示输出最小公倍数,其中 %d
代表 i
的值;然后使用 break
语句跳出当前的 for
循环,表示不再查找更小的公倍数。
- 最后,返回0,表示程序正常结束