C++输入两个正整数,用辗转相除法计算它们的最大公约数
时间: 2024-03-23 21:43:59 浏览: 39
好的,以下是C++代码实现:
```c++
#include <iostream>
using namespace std;
int gcd(int a, int b) {
while(b != 0) {
int r = a % b;
a = b;
b = r;
}
return a;
}
int main() {
int a, b;
cout << "请输入两个正整数:";
cin >> a >> b;
int result = gcd(a, b);
cout << "最大公约数为:" << result << endl;
return 0;
}
```
以上代码中,我们定义了一个 `gcd` 函数,用于计算两个正整数的最大公约数。主函数中,我们首先输入两个正整数,然后调用 `gcd` 函数计算它们的最大公约数并输出结果。
相关问题
设计一个c++程序,程序功能:输入两个正整数,用辗转相除法计算它们的最大公约数
以下是使用辗转相除法计算两个正整数的最大公约数的C程序:
```c
#include <stdio.h>
int main()
{
int num1, num2, remainder, gcd;
printf("请输入两个正整数:\n");
scanf("%d %d", &num1, &num2);
while (num2 != 0)
{
remainder = num1 % num2;
num1 = num2;
num2 = remainder;
}
gcd = num1;
printf("最大公约数为:%d\n", gcd);
return 0;
}
```
运行结果:
```
请输入两个正整数:
24 36
最大公约数为:12
```
C++输入两个正整数m和n求其最大公约数和最小公倍数
以下是C++代码:
```
#include <iostream>
using namespace std;
int gcd(int m, int n) {
if(n == 0) return m;
return gcd(n, m % n);
}
int lcm(int m, int n) {
return m / gcd(m, n) * n;
}
int main() {
int m, n;
cout << "请输入两个正整数m和n:" << endl;
cin >> m >> n;
cout << "最大公约数为:" << gcd(m, n) << endl;
cout << "最小公倍数为:" << lcm(m, n) << endl;
return 0;
}
```
首先定义了 `gcd` 函数来计算最大公约数,使用递归的方式实现辗转相除法。然后定义 `lcm` 函数来计算最小公倍数,直接使用公式:两数之积等于它们的最大公约数和最小公倍数的乘积。最后在 `main` 函数中读入两个正整数,分别输出最大公约数和最小公倍数即可。