C语言四种方法求最大公约数
作者:野牛程序员:2023-08-14 11:04:23C语言阅读 2786
在 C 语言中,有几种方法可以求最大公约数(GCD):欧几里得算法、辗转相除法、更相减损法和穷举法。以下分别介绍这四种方法的实现示例:
欧几里得算法(辗转相除法):
#include <stdio.h>
int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
int main() {
int num1, num2;
printf("输入两个整数: ");
scanf("%d %d", &num1, &num2);
int result = gcd(num1, num2);
printf("最大公约数为: %d\\n", result);
return 0;
}更相减损法:
#include <stdio.h>
int gcd(int a, int b) {
while (a != b) {
if (a > b) {
a -= b;
} else {
b -= a;
}
}
return a;
}
int main() {
int num1, num2;
printf("输入两个整数: ");
scanf("%d %d", &num1, &num2);
int result = gcd(num1, num2);
printf("最大公约数为: %d\\n", result);
return 0;
}辗转相除法(递归实现):
#include <stdio.h>
int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
int main() {
int num1, num2;
printf("输入两个整数: ");
scanf("%d %d", &num1, &num2);
int result = gcd(num1, num2);
printf("最大公约数为: %d\\n", result);
return 0;
}穷举法(循环遍历求解):
#include <stdio.h>
int gcd(int a, int b) {
int min = (a < b) ? a : b;
for (int i = min; i >= 1; --i) {
if (a % i == 0 && b % i == 0) {
return i;
}
}
return 1; // 如果没有找到公约数,默认返回1
}
int main() {
int num1, num2;
printf("输入两个整数: ");
scanf("%d %d", &num1, &num2);
int result = gcd(num1, num2);
printf("最大公约数为: %d\\n", result);
return 0;
}这些示例程序分别演示了使用不同方法求解最大公约数的过程。可以根据需要选择适合的方法。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

