主要是今天我看到一个提问,是求最大公约数和最小公倍数的问题,代码答案如下:
#include <stdio.h>
int main(int argc, const char * argv[])
{
int num1 = 0;
int num2 = 0;
int gcd = 0; //最大公约数
int lcm = 0; //最小公倍数
printf("请输入两个数:\n");
scanf("%d%d", &num1, &num2);
int product = num1*num2;
if (num1 > num2)//始终让num1是最小数。
{
int temp = num1;
num1 = num2;
num2 = temp;
}
for (int i = num1; i > 0; i--) {
if (num1%i == 0 && num2%i == 0) {
gcd = i;
break;
}
}
lcm = product/gcd;
printf("gcd = %d\n", gcd);
printf("lcm = %d\n", lcm);
return 0;
}
然后我就感觉,即使不比较num1 和num2大小(也就是去除if部分),直接进行for循环应该也是可以找到最大公约数的,只是可能会多循环一些。所以就考虑到优化问题。 |