使用C 语言设计相关算法并编写一个完整的程序,计算任意两个整数a,b 的最大公因数,其中0≤a,b≤10100。(要求:禁止网上下载大数类实现;10 分钟内输出结果)
时间: 2025-01-28 16:17:32 浏览: 20
在C语言中,我们可以使用欧几里得算法(Euclidean Algorithm),也称为辗转相除法来计算两个整数的最大公约数(GCD)。这个算法基于这样一个性质:对于任何三个正整数a、b和c,如果a能整除b,那么a也是b和c的最大公约数。下面是使用递归实现的欧几里得算法:
#include <stdio.h>
// 定义函数计算最大公约数
int gcd(int a, int b) {
// 如果b为0,则a即为最大公约数
if (b == 0)
return a;
else
// 递归调用gcd函数,将b作为新的a,a对b取余的结果作为新的b
return gcd(b, a % b);
}
int main() {
long long int a, b;
printf("请输入两个0到10100之间的整数:");
scanf("%lld %lld", &a, &b); // 输入两个整数
// 确保输入的数在指定范围内
if (a > 10100 || b > 10100) {
printf("输入错误,请输入0到10100之间的整数。\n");
return 1;
}
int result = gcd(a, b);
printf("这两个数的最大公约数是:%d\n", result);
return 0;
}
在这个程序中,gcd
函数通过不断将较大的数替换为两数的余数,直到余数为0,此时较小的数就是最大公约数。注意,为了处理如此大的数字,我们使用了long long int
数据类型。
相关推荐


















