6.52m + a
import sys
import math
input = sys.stdin.readline
MAX = 10 ** 6
n = int(input().rstrip())
nums = list(map(int, input().rstrip().split()))
primes = [True] * (MAX + 1)
primes[0] = False
primes[1] = False
for i in range(2, int(math.sqrt(MAX) + 1)):
if primes[i]:
j = 2
while (i * j) <= MAX:
primes[i * j] = False
j += 1
arr = set()
for num in nums:
if primes[num]:
arr.add(num)
res = 1
for i in arr:
res *= i
if res == 1:
print(-1)
else:
print(res)
에라토스테네스의 체를 이용해서 풀었다.
set을 이용해서 중복제거해야한다는 것을 늦게 알아서... 타이머를 멈춰둔채로 조금 고쳤다.