c++输入的开始是一个正整数n,后面接着n个正整数,程序要计算并输出这n个正整数的最小公倍数,输出后面带有空行。
输入输出说明:
输入:
2 4 6
输出
12
#include<iostream>
#include<vector>
using namespace std;
int fun(int a,int b)
{
int aa = a;
int bb = b;
while (aa != bb)
{
if (aa > bb) bb += b;
else aa += a;
}
return aa;
}
int main()
{
int num = 0;
vector<int> arr;
cin >> num;
while (num != 0)
{
num--;
int t = 0;
cin >> t;
if (t == 0)
{
cout << "error 0 " << endl;
return 0;
}
arr.push_back(t);
}
for (auto n : arr)
{
arr[0] = fun(arr[0],n);
}
if (!arr.empty())
{
cout << arr[0] << endl;
}
}
代码如下,结果已验证:
#include<stdio.h>
int main()
{
int n, a, b, i, temp, r, min;
scanf("%d%d",&n,&a);
for( i = 1; i < n ;i++ )
{
scanf("%d",&b);
min = a;
r = b;
if( a < b )
{
a = a +b;
b = a - b;
a = a - b;
}
//求最大公约数
while(b)
{
temp = a % b;
a = b;
b = temp;
}
//求最大公倍数
a = min / a * r;
}
printf("%d\n",a);
return 0;
}