两个正整数的最大公约数代码c语言
时间: 2024-01-19 17:02:31 浏览: 117
下面是用C语言实现求两个正整数的最大公约数的代码:
```
#include <stdio.h>
unsigned int GCD(unsigned int M, unsigned int N);
int main(void) {
unsigned long int m, n;
scanf("%lu %lu", &m, &n);
printf("%lu\n", GCD(m, n));
return 0;
}
unsigned int GCD(unsigned int M, unsigned int N) {
unsigned int rem;
while (N > 0) {
rem = M % N;
M = N;
N = rem;
}
return M;
}
```
这个代码使用了欧几里得算法,也称为辗转相除法,通过不断地取模运算,将两个数的大小关系转化为两个数的余数的大小关系,最终得到它们的最大公约数。
相关问题
计算两个正整数的最大公约数C语言
在C语言中,计算两个正整数的最大公约数(Greatest Common Divisor, GCD)通常使用欧几里得算法(Euclidean Algorithm)。这个算法基于这样一个原理:两个整数a和b(假设a > b),它们的最大公约数等于b和a除以b的余数的最大公约数。以下是一个简单的C函数实现:
```c
#include <stdio.h>
// 定义一个辅助函数来递归地找到最大公约数
int gcd(int a, int b) {
if (b == 0)
return a; // 如果b为0,则a就是最大公约数
else
return gcd(b, a % b); // 递归调用gcd并更新参数
}
int main() {
int num1, num2;
printf("请输入两个正整数:");
scanf("%d %d", &num1, &num2);
int result = gcd(num1, num2);
printf("这两个数的最大公约数是:%d\n", result);
return 0;
}
```
在这个程序中,`gcd`函数接收两个参数,如果第二个参数为零,返回第一个参数;否则,继续对第二个参数和第一个参数除以第二个参数的余数求最大公约数,直到b变为0。
使用欧几里得算法计算两个正整数的最大公约数 c语言
欧几里得算法,也称为辗转相除法,是一种古老的数学方法,用于找到两个正整数a和b的最大公约数(Greatest Common Divisor,简称GCD)。在C语言中,你可以通过递归的方式来实现这个算法。以下是简单的C代码:
```c
#include <stdio.h>
// 函数声明
int gcd(int a, int b);
// 主函数
int main() {
int num1, num2;
printf("请输入两个正整数:");
scanf("%d %d", &num1, &num2);
// 调用gcd函数并打印结果
int result = gcd(num1, num2);
printf("这两个数的最大公约数是:%d\n", result);
return 0;
}
// 欧几里得算法的实现
int gcd(int a, int b) {
if (b == 0)
return a; // 当余数为0时,b就是最大公约数
else
return gcd(b, a % b); // 递归调用,将b替换为原来的余数a%b
}
```
在这个程序中,用户输入两个正整数,然后`gcd`函数通过不断取余数的方式逐步缩小待求解的数对,直到其中一个变为0,此时另一个数即为最大公约数。
阅读全文
相关推荐













