在 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&2025澳门资料正版大全资料 nbsp;<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"澳门三肖三码精准100%最新版本功能介绍, &num1, &num2); int result = gcd(num1, num2); printf("最大公约数为: %d\\n", result); return 0; }
这些示例程序分别演示了使用不同方法求解最大公约数的过程。可以根据需要选择适合的方法。
评论列表