求两个正整数的最大公约数。编写求最大公约数的函数Gcd(),主函数中输入任意两个整数,调用此函数求最大公约数并输出结果。 要求函数原型为:int Gcd(int a, int b),a、b为输入的任意两个整数,当a或b为0或负数时,函数返回值为-1,否则返回a、b的最大公约数。 示例: Input a,b:4,48 Greatest Common Divisor of 4 and 48 is 4 输入提示"Input a,b:" 输入格式"%d,%d" 输出提示及格式:"Greatest Common Divisor of %d and %d is %d\n" or "Input number should be positive!\n"
时间: 2024-02-15 19:05:09 浏览: 90
好的,下面是符合要求的代码实现:
```c++
#include <iostream>
using namespace std;
int Gcd(int a, int b) {
if (a <= 0 || b <= 0) { // a或b为0或负数时返回-1表示出错
return -1;
}
while (a % b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return b;
}
int main() {
int a, b;
cout << "Input a,b:";
scanf("%d,%d", &a, &b);
int gcd = Gcd(a, b);
if (gcd == -1) {
cout << "Input number should be positive!\n";
} else {
printf("Greatest Common Divisor of %d and %d is %d\n", a, b, gcd);
}
return 0;
}
```
函数Gcd()的实现与之前的相同。在主函数中,首先输入两个整数,然后调用Gcd()函数求最大公约数,最后判断是否出错并输出结果。
注意,当a或b为0或负数时,函数Gcd()返回-1表示出错。在输出结果时,使用了printf()函数并按照要求格式化输出。
相关问题
求两个正整数的最大公约数。编写求最大公约数的函数Gcd(),主函数中输入任意两个整数,调用此函数求最大公约数并输出结果。 要求函数原型为:int Gcd(int a, int b),a、b为输入的任意两个整数,当a或b为0或负数时
好的,我知道了。下面是代码实现:
```c++
#include <iostream>
using namespace std;
int Gcd(int a, int b) {
if (a <= 0 || b <= 0) { // a或b为0或负数时返回-1表示出错
return -1;
}
while (a % b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return b;
}
int main() {
int a, b;
cout << "请输入两个正整数:" << endl;
cin >> a >> b;
int gcd = Gcd(a, b);
if (gcd == -1) {
cout << "输入的数不合法!" << endl;
} else {
cout << a << "和" << b << "的最大公约数为:" << gcd << endl;
}
return 0;
}
```
函数Gcd()的实现使用了辗转相除法,具体原理可以自行搜索了解。在主函数中,首先输入两个整数,然后调用Gcd()函数求最大公约数,最后判断是否出错并输出结果。
注意,当a或b为0或负数时,函数Gcd()返回-1表示出错。这种处理方式并不是唯一的,可以根据实际需求调整。
编写函数求两个正整数的最大公约数,并在main主函数中调用该函数求输入的两个整数的最大公约数和最小公倍数。
以下是一个求两个正整数最大公约数和最小公倍数的函数及其在main函数中的调用示例:
```c++
#include <iostream>
using namespace std;
// 求两个正整数的最大公约数
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
// 求两个正整数的最小公倍数
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
int main() {
int a, b;
cout << "请输入两个正整数:";
cin >> a >> b;
cout << "它们的最大公约数是:" << gcd(a, b) << endl;
cout << "它们的最小公倍数是:" << lcm(a, b) << endl;
return 0;
}
```
运行结果:
```
请输入两个正整数:12 18
它们的最大公约数是:6
它们的最小公倍数是:36
```
阅读全文