这个题目不难,时间复杂度可以在O(n)内搞定,具体分析见代码:
#include<stdio.h>
int gcd(int a, int b) {// 求a、b的最大公约数
while (b != 0) {
int r = a%b;
a = b;
b = r;
}
return a;
}
int main()
{
int n;
while (scanf("%d", &n) != EOF) {
if (n == 0) break;
int *a = new int[n];
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int ret = -1;
for (int i = 0; i < n - 1; i++) {// 循环n-1次就好
int t = a[i] * a[i + 1] / gcd(a[i], a[i + 1]);
if (t > ret) {
ret = t;
}
}
delete[]a;
printf("%d\n", ret);
}
return 0;
}