hello呀,今天你学习了吗?别偷懒哦!
宝剑锋从磨砺出,梅花香自苦寒来。
今天来讲讲如何求两数的最大公约数和最小公倍数:
求最大公约数的时候,那个最大公约数一定小于或者等于两数之间较小的那个吧,所以我们应该从两个数中较小的那个下手。以较小的那个数作为初始值,那么在for循环中我们怎样确定较小的那个值呢?
我们可以用到三目运算符,三目运算符的书写:<表达式1>?<表达式1>:<表达式1>;
它的运算方法是这样的:先求表达式1的值,如果为真,那么就会执行表达式2,并返回表达式2的结果,如果表达式1为假,则执行表达式3,并返回表达式3的结果。
当第一次发现满足条件的数时,我们应当立即跳出循环,不再进行循环!如果不跳出的话,将会打印两数的所有共因子。
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
for (int i = (a < b) ? a : b; i>=1;i--)//表达式一求a和b之间较小的那个值
{
if (a % i == 0 && b % i == 0)
{
printf("%d",i);//第一次发现满足条件的数时,打印后立即跳出。
break;
}
}
return 0;
}
运行结果展示;
那么求最小公倍数的时候,我们是不是也用同样的思想就可以了呢。相信你们都会了吧。
那我就直接上代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
for (int j = (a > b) ? a : b; j <=a * b; j++)//较大的值,作为初始值。
{
if (j % a == 0 && j % b == 0)
{
printf("%d", j);//同样立即打印并跳出循环
break;
}
}
return 0;
}
运行结果展示:
当然还有其他的方法哟,今天的内容到此结束咯,我们明天见!