ограничение по времени codeforces (230B T-простых чисел) python3.6 - PullRequest
0 голосов
/ 06 сентября 2018

У меня проблема с моим кодом, я использую эту функцию, чтобы создать список, и я просто создаю большой список размеров памяти (1000000), в основном я ввожу codeforces input () и позволяю им sqrt ( ), поэтому я не знаю, почему мой код превышает 2000 мс, пожалуйста, помогите мне решить эту проблему.

import math

def eratosthenes(n):  # creative the prime list
    IsPrime = [True] * (n + 1)
    IsPrime[1] = False
    for i in range(2, int(n ** 0.5) + 1):
        if IsPrime[i]:
            for j in range(i * i, n + 1, i):
                IsPrime[j] = False
    return [x for x in range(2, n + 1) if IsPrime[x]]

#  main code
input()
li = list(map(int, input().split()))
nl = eratosthenes(1000000)
for i in li:
    i = math.sqrt(i)
    if int(i) == i:
        print("YES" if i in nl else "NO")
    else:
        print("NO")

Я думаю, что время выполнения моего кода похоже на код другого, когда я ссылаюсь на них, или я ошибаюсь.

...