找最大公约数(遍历法,慢)
#include <stdio.h>
int main() {int a, b;scanf("%d %d", &a, &b);
int gcd = 1; // 初始化最大公约数为1
int min = (a < b) ? a : b; // 找到a和b中的较小值
// 遍历从2到min的所有可能的公约数
for (int i = 2; i <= min; i++) {
if ((a % i == 0) && (b % i == 0)) {
gcd = i; // 更新最大公约数
}
}
printf("%d与%d的最大公约数是%d\n", a, b, gcd);
return 0;
}
#include <stdio.h>
int main() {int a, b;scanf("%d %d", &a, &b);
int gcd = 1; // 初始化最大公约数为1
int min = (a < b) ? a : b; // 找到a和b中的较小值
int i = 2; // 初始化循环变量
while (i <= min) { // 使用while循环
if ((a % i == 0) && (b % i == 0)) {
gcd = i; // 更新最大公约数
}
i++; // 更新循环变量
}
printf("%d与%d的最大公约数是%d\n", a, b, gcd);
return 0;
}
查看2道真题和解析