对输入的两个正整数,输出他们的最大公约数
时间: 2023-06-19 18:06:45 浏览: 99
可以使用辗转相除法求两个正整数的最大公约数,具体步骤如下:
1. 用较大数除以较小数,将余数记为r1(第一次除法的余数);
2. 用刚才的余数r1去除较小数,将余数记为r2(第二次除法的余数);
3. 用刚才的余数r2去除刚才的余数r1,将余数记为r3(第三次除法的余数);
4. 如此继续下去,直到余数为0为止,这时最后的除数就是原来两个数的最大公约数。
具体实现如下(假设输入的两个数分别为a和b):
```python
def gcd(a, b):
while b:
a, b = b, a % b
return a
```
这里使用了Python中的变量交换技巧,可以将a和b的值互换。
相关问题
写一个c++程序,输入两个正整数输出其最大公因数
在C++中,可以使用欧几里得算法(Euclidean algorithm)来计算两个正整数的最大公因数(Greatest Common Divisor,简称GCD)。下面是一个简单的程序示例:
```cpp
#include <iostream>
using namespace std;
// 函数用于计算两个数的最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
int main() {
int num1, num2;
cout << "请输入第一个正整数:";
cin >> num1;
cout << "请输入第二个正整数:";
cin >> num2;
// 计算并输出最大公约数
int result = gcd(num1, num2);
cout << "这两个数的最大公因数是:" << result << endl;
return 0;
}
```
在这个程序中,`gcd`函数递归地寻找两数之间的公约数,直到其中一个数变成0,此时另一个数就是最大公约数。
输入两个正整数,输出最大公约数,java
在Java中,计算两个正整数的最大公约数(Greatest Common Divisor, GCD)可以使用欧几里得算法(Euclidean Algorithm)。这个算法基于这样一个性质:对于任意三个正整数a、b和c,如果d是a和b的最大公约数,那么d也是a除以b的余数r和b的最大公约数。
以下是使用Java实现的一个简单版本:
```java
public class Main {
public static int gcd(int num1, int num2) {
// 如果num2为0,则返回num1作为最大公约数
if (num2 == 0) {
return num1;
} else {
// 否则,递归地计算两个较小数的最大公约数
return gcd(num2, num1 % num2);
}
}
public static void main(String[] args) {
int num1 = 48, num2 = 18; // 要计算最大公约数的两个数字
System.out.println("The greatest common divisor of " + num1 + " and " + num2 + " is: " + gcd(num1, num2));
}
}
```
在这个程序中,`gcd()`函数接受两个参数,通过不断将较大的数替换为其与较小数的差,直到其中一个变成0,此时另一个数就是两数的最大公约数。
阅读全文