#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn = 1e6 + 11;
int a[maxn], vis[maxn];
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i ++) {
cin >> a[i];
// out<<a[i]<<endl;
for (int j = 2; j * j <= a[i]; j ++) {
if (a[i] % j == 0) {
vis[a[i] / j] = 1;
}
}
vis[a[i]] = 1;
}
if (vis[1] == 0) {
cout<<1<<endl;
return 0;
}
if (vis[2] == 0) {
cout<<2<<endl;
return 0;
}
for (int i = 3; i < 1e6; i ++) {
for(int j = 2; j * j <= i; j ++) {
if (i % j == 0) {
if (vis[j]) {
vis[i] = 1;
break;
}
if (vis[i / j]) {
vis[i] = 1;
break;
}
}
}
}
for (int i = 1; i < 1e6; i ++) {
if (vis[i] == 0) {
cout<<i<<endl;
return 0;
}
}
return 0;
}将 a 数组中的每一个元素及其除本身与 1 的子因子标记为 一访问。
枚举每一个数,若该元素子因子被标记为 1, 则将至标记为 1。
返回第一个未被标记的元素即为所求结果。

京公网安备 11010502036488号