编写一个C语言程序,求任意两个正整数M,N的最大公因子
时间: 2024-09-08 19:02:40 浏览: 33
编写C语言程序来求任意两个正整数M和N的最大公因子(Greatest Common Divisor, GCD)可以使用辗转相除法(也称欧几里得算法)。以下是实现这一算法的C语言代码示例:
```c
#include <stdio.h>
// 函数声明
int gcd(int a, int b);
int main() {
int M, N;
printf("请输入两个正整数M和N:");
scanf("%d %d", &M, &N);
// 确保M大于等于N
if (M < N) {
int temp = M;
M = N;
N = temp;
}
// 输出最大公因子
printf("两个数的最大公因子是:%d\n", gcd(M, N));
return 0;
}
// 定义函数计算最大公因子
int gcd(int a, int b) {
while (b != 0) {
int temp = a % b;
a = b;
b = temp;
}
return a;
}
```
在这段代码中,我们首先定义了一个名为`gcd`的函数,该函数接受两个整数参数`a`和`b`,并返回它们的最大公因子。在`main`函数中,程序首先提示用户输入两个正整数M和N,然后调用`gcd`函数计算并输出它们的最大公因子。
相关问题
编写C语言程序求两个正整数的最大公约数
好的,下面是求两个正整数的最大公约数的C语言程序:
```c
#include <stdio.h>
int main()
{
int num1, num2, i, gcd;
printf("请输入两个正整数:\n");
scanf("%d %d", &num1, &num2);
for(i=1; i<=num1 && i<=num2; ++i)
{
if(num1%i==0 && num2%i==0)
gcd = i;
}
printf("%d和%d的最大公约数是%d\n", num1, num2, gcd);
return 0;
}
```
该程序通过输入两个正整数,使用for循环从1开始逐个判断能否同时被两个数整除,如果可以,就更新最大公约数gcd的值。最后输出结果。注意,该程序没有做输入数据的合法性检查。
c语言求两个正整数m和n最大公约数
C语言求两个正整数m和n最大公约数可以使用辗转相除法,也称为欧几里得算法。具体步骤如下:
1. 判断m和n的大小关系,使得m为较大值,n为较小值。
2. 用m除以n,得到余数r。
3. 若r为0,则n即为最大公约数。
4. 若r不为0,则令m=n,n=r,返回第2步。
C语言代码如下:
```
#include <stdio.h>
int gcd(int m, int n) {
int r;
while (n != 0) {
r = m % n;
m = n;
n = r;
}
return m;
}
int main() {
int m, n;
printf("请输入两个正整数:\n");
scanf("%d %d", &m, &n);
printf("%d和%d的最大公约数为%d\n", m, n, gcd(m, n));
return 0;
}
```
其中,函数gcd用于计算最大公约数,main函数用于输入两个正整数并输出它们的最大公约数。