Problem jest taki, że dla każdego testu od początku szukasz liczb pierwszych na danym przedziale. Dla danych a = 1, b = 1e9, Twój program sprawdziłby wszystkie liczby postaci 6n+-1 w przedziale [1, sqrt(1e9)]. Tych liczb może być jakoś sqrt(1e9)/6, a dodatkowo musisz sprawdzić w O(sqrt(x)) czy każda z tych liczb jest pierwsza. Złożoność jest wtedy równa jakoś O(sqrt(b)^2*t), gdzie t to ilość testów, a to jest zdecydowanie za wolne.
Lepiej by było gdybyś sitem znalazł wszystkie liczby pierwsze nie większe niż sqrt(1e9), następnie dla każdego testu, musisz tylko przejść po tych wszystkich liczbach pierwszych i znaleźć te których kwadraty mieszą się w przedziale [a, b]. Liczb pierwszych mniejszych od sqrt(1e9) nie będzie wiecej niż 10^4, więc to powinno zmieścić się w limitach czasowych