思路
用求两个数的最大公约数和最小公倍数的代码,逐一往下找
代码
#include <bits/stdc++.h>
using namespace std;
long long int temp;
long long int temp1;
long long int temp2;
long long int gcd(int x,int y)
{
if(x < y)
{
temp = x;
x = y;
y = temp;
}
while(y != 0)
{
temp = x % y;
x = y;
y = temp;
}
return x;
}
long long int lcm(int x,int y)
{
temp = gcd(x,y);
return ((x * y) / temp);
}
long long int ngcd(int a[],int n)
{
int i = 0;
temp1 = gcd(a[i],a[i+1]);
i = i + 2;
while(i < n)
{
temp1= gcd(temp1,a[i]);
i++;
}
return temp1;
}
long long int nlcm(int a[],int n)
{
int i = 0;
temp2 = lcm(a[i],a[i+1]);
i = i + 2;
while(i < n)
{
temp2 = lcm(temp2,a[i]);
i++;
}
return temp2;
}
int main()
{
int n;
cin >> n;
int a[n];
for(int i = 0;i < n;i++)
{
cin >> a[i];
}
cout << ngcd(a,n) << endl;
cout << nlcm(a,n) << endl;
return 0;
}