We know that prime numbers are positive integers that have exactly two distinct positive divisors. Similarly, we'll call a positive integer *t* Т-prime, if *t* has exactly three distinct positive divisors.

You are given an array of *n* positive integers. For each of them determine whether it is Т-prime or not.
The first line contains a single positive integer, *n* (1 ≤ *n* ≤ 10<sup class="upper-index">5</sup>), showing how many numbers are in the array. The next line contains *n* space-separated integers *x*<sub class="lower-index">*i*</sub> (1 ≤ *x*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">12</sup>).

Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is advised to use the cin, cout streams or the %I64d specifier.
#罗景轩2300012610
import math
nums = int(input())
line = input()
num = list(map(int, line.split()))

maxn = max(num)

pn = [0]
zn = [2]

for i in range(1, maxn + 1):
    pn.append(0)

for i in range(3, maxn, 2):
    if pn[i] == 0:
        zn.append(i)
    for j in range(1, len(zn)):
        if i * zn[j] > maxn:
            break
        pn[i * zn[j]]=1
        if i % zn[j] != 0:
                break

tn = [0]

for i in range(1, maxn ** 2):
    tn.append(0)

for i in zn:
    tn[i ** 2] = 1 

for i in range(0, nums):
    n = num[i]
    if tn[n] :
        print("YES")
    else:
        print("NO")