用c语言写一个程序:求最大公约数:编写1个函数,求两个正整数的最大公约数,并用主函数调用这个函数,然后输出结果。
时间: 2024-05-14 12:16:08 浏览: 72
以下是用C语言编写求最大公约数的程序:
```c
#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("请输入两个正整数:\n");
scanf("%d %d", &num1, &num2);
int result = gcd(num1, num2);
printf("%d和%d的最大公约数为:%d\n", num1, num2, result);
return 0;
}
```
程序思路:
1. 定义一个求最大公约数的函数 `gcd`,接收两个参数 `a` 和 `b`。
2. 在函数中判断 `b` 是否为 0,若为 0,则返回 `a`;否则,返回 `b` 和 `a%b` 的最大公约数。
3. 在主函数中输入两个正整数 `num1` 和 `num2`,并调用 `gcd` 函数求出它们的最大公约数,将结果存入变量 `result` 中。
4. 最后将结果输出。
相关问题
c语言写出两个数 分别求出两个整数的最大公约数和最小公倍数 用主函数调用这两个函数
好的,下面是代码实现:
```
#include <stdio.h>
int gcd(int a, int b); // 求最大公约数的函数声明
int lcm(int a, int b); // 求最小公倍数的函数声明
int main() {
int num1, num2;
printf("请输入两个正整数:\n");
scanf("%d %d", &num1, &num2);
printf("%d和%d的最大公约数为:%d\n", num1, num2, gcd(num1, num2));
printf("%d和%d的最小公倍数为:%d\n", num1, num2, lcm(num1, num2));
return 0;
}
int gcd(int a, int b) {
int temp;
while (b != 0) {
temp = b;
b = a % b;
a = temp;
}
return a;
}
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
```
上述代码中,`gcd`函数用来求最大公约数,使用辗转相除法进行计算;`lcm`函数用来求最小公倍数,直接利用公式`最小公倍数=两数之积÷最大公约数`进行计算。主函数中先输入两个正整数,然后分别调用`gcd`和`lcm`函数进行计算并输出结果。
用c语言编写程序 求两个正整数的最大公约数
在C语言中,求两个正整数的最大公约数(Greatest Common Divisor,简称GCD)可以使用欧几里得算法(Euclidean Algorithm)。该算法的基本思想是利用辗转相除法,即较大的数除以较小的数,然后用余数替换原来的较小数,继续这个过程,直到余数为0,此时的除数就是最大公约数。
下面是一个简单的C函数,实现了这个算法:
```c
#include <stdio.h>
// 函数声明
int gcd(int a, int b);
// 主函数
int main() {
int num1, num2;
printf("请输入两个正整数:");
scanf("%d %d", &num1, &num2);
int result = gcd(num1, num2);
printf("这两个数的最大公约数是:%d\n", result);
return 0;
}
// 欧几里得算法实现 GCD
int gcd(int a, int b) {
if (b == 0)
return a; // 如果b为0,a就是GCD
else
return gcd(b, a % b); // 递归调用,将b和a除以b的余数作为新的a和b
}
```
在这个程序中,`gcd()`函数会不断地对输入的两个数做取模操作,直到其中一个数变为0,这时另一个数就为最大公约数。
阅读全文
相关推荐
















