在这里插入代码片
```#include <iostream>
using namespace std;
int check(int a[], int n) //判断输入的数字中是否含有0或者负数
{
for (int i = 0; i<n; i++)
{
if (a[i] <= 0)
{
cout << "输入的数字不合法,不能出现0或者负数" << endl;
return 1;
}
}
return 0;
}
int gcd1(int a, int b) //求两个数的最大公约数
{
int temp;
if (a<b) //找出两个数中最大的
{
temp = a;
a = b;
b = temp;
}
while (b != 0) //通过循环求两个数的余数,直到余数为0
{
temp = a%b; a = b; b = temp;
}
return a;
}
int lcm1(int x, int y) //求两个数的最小公倍数
{
return x*y / gcd1(x, y);
}
int gcd(int a[], int n) //求n个数的最大公约数
{
int i;
int c = a[0];
for (i = 1; i<n; i++) //利用for循环,调用求两个最大公约数的函数来求n个数的最大公约数
{
c = gcd1(c, a[i]);
}
return c;
}
int lcm(int a[], int n) //求n个数的最小公倍数
{
int i;
int s = 1;
for (i = 0; i<n; i++)//利用for循环,调用求两个最下公倍数的函数来求n个数的最下公倍数
{
s = lcm1(s, a[i]);
}
return s;
}
int main()
{
int i, n;
int a[100];
int w = 1;
int x, y;
cout << "输入n的数值" << endl;
cin >> n;
if (n<2)//判断输入的的数据个数是否合理
{
cout << "输入错误,请重新输入";
}
else
{
while (w)
{
for (i = 0; i<n; i++)//通过数组遍历输入n个数据的值
cin >> a[i];
w = check(a, n);
}
x = gcd(a, n);
y = lcm(a, n);
//输出结果
cout << "n个数的最大公约数是:" << x << endl;
cout << "n个数的最小公倍数是:" << y << endl;
}
return 0;
}
求N个数的最大公约数和最小公倍数
最新推荐文章于 2021-12-24 22:00:07 发布