给定两个正整数a、b,求它们的最大公约数。 输入描述 两个正整数a、b(1≤a≤103,1≤b≤103)。 输出描述 输出a和b的最大公约数。 C语言回答
时间: 2024-03-26 20:35:40 浏览: 183
可以使用辗转相除法(又称欧几里得算法)求两个正整数的最大公约数。具体步骤如下:
1. 将a、b中较大的数赋值给max,较小的数赋值给min;
2. 用max除以min,得到商q和余数r;
3. 如果r等于0,那么min就是a和b的最大公约数;
4. 否则,将min赋值为r,将max赋值为原来的min,然后返回步骤2。
以下是C语言的代码实现:
```c
#include <stdio.h>
int gcd(int a, int b) {
int max = a > b ? a : b;
int min = a <= b ? a : b;
while (min != 0) {
int r = max % min;
max = min;
min = r;
}
return max;
}
int main() {
int a, b;
scanf("%d %d", &a, &b);
printf("%d\n", gcd(a, b));
return 0;
}
```
其中,gcd函数用于求a和b的最大公约数。在while循环中,用max除以min,得到商q和余数r。如果r等于0,那么min就是a和b的最大公约数,直接返回min即可。否则,将min赋值为r,将max赋值为原来的min,继续循环。最后输出最大公约数即可。
相关问题
题目描述 给定两个正整数aa、bb,求它们的最大公约数。 输入描述 两个正整数aa、bb(1≤a≤103,1≤b≤1031≤a≤103,1≤b≤103)。 输出描述 输出aa和bb的最大公约数。 用c语言
以下是用C语言实现的代码:
```c
#include <stdio.h>
int gcd(int a, int b) {
if (b == 0) { // 如果b等于0,那么a就是最大公约数
return a;
} else { // 否则递归求b和a%b的最大公约数
return gcd(b, a % b);
}
}
int main() {
int a, b;
scanf("%d %d", &a, &b); // 读入两个整数
int ans = gcd(a, b); // 求它们的最大公约数
printf("%d\n", ans); // 输出最大公约数
return 0;
}
```
该程序定义了一个名为`gcd`的函数,用于求两个整数的最大公约数。该函数使用了递归算法,如果`b`等于0,则`a`就是最大公约数;否则递归调用`gcd`函数求`b`和`a%b`的最大公约数。主函数中读入两个整数,然后调用`gcd`函数求它们的最大公约数,并输出该值。
c语言编程 给定两个正整数,求它们的最大公约数。输入一行 包含两个正整数。输出一个正整数,即这两个正整数的最大公约数
在 C 语言编程中,求两个正整数的最大公约数 (Greatest Common Divisor, GCD) 可以使用欧几里得算法(Euclidean Algorithm),也称为辗转相除法。下面是简单的步骤:
```c
#include <stdio.h>
// 定义计算最大公约数的函数
int gcd(int a, int b) {
if (b == 0) { // 如果第二个数为零,第一个数就是最大公约数
return a;
} else {
return gcd(b, a % b); // 递归调用,用 b 和 a除以b 的余数继续求解
}
}
int main() {
int num1, num2; // 输入两个正整数
scanf("%d %d", &num1, &num2);
int result = gcd(num1, num2);
printf("最大公约数是:%d\n", result);
return 0;
}
```
在这个程序中,用户通过 `scanf` 函数输入两个数字,然后调用 `gcd` 函数计算并输出它们的最大公约数。
阅读全文
相关推荐












