1.设计一个程序: 1)设计一个函数f,求二个数的最大公约数int f(int x,int y); 2)设计一个函数g,求二个数的最小公倍数int g(int x,int y); 3)从键盘输入一个整数,设计一个函数inNumber,若为正正数则返回它,否则直到得数>0为止。
时间: 2024-12-06 10:33:05 浏览: 16
为了设计这个程序,我们首先需要了解最大公约数(GCD)和最小公倍数(LCM)的基本算法。这里是一个简单的C++实现:
```cpp
#include <iostream>
using namespace std;
// 求两个数的最大公约数 (Euclidean算法)
int gcd(int x, int y) {
if (y == 0) return x;
return gcd(y, x % y);
}
// 根据最大公约数计算最小公倍数
int lcm(int x, int y) {
return (x * y) / gcd(x, y);
}
// 输入转换函数,如果输入非正,则不断取反直到结果大于0
int inNumber() {
int num;
while (cin >> num && num <= 0) {
num = -num; // 取反操作
}
return num;
}
int main() {
int a = inNumber();
int b = inNumber();
cout << "两数的最大公约数为: " << gcd(a, b) << endl;
cout << "两数的最小公倍数为: " << lcm(a, b) << endl;
return 0;
}
```
在这个程序中,`gcd()` 函数使用了辗转相除法(欧几里得算法),而 `lcm()` 则利用公式 LCM(x, y) = |x*y| / GCD(x, y) 来计算。`inNumber()` 函数会循环读取用户的输入,并将其转换成正数。
阅读全文