1 / 5
Aug 2018
 t=int(input())
 for i in range(t):
     m,n=map(int,input().split())
     prime = [1 for i in range(n+1)]

     p = 2
     while(p * p <= n):
     
         if (prime[p] == 1):
         
             for i in range(p * 2, n + 1, p):
                 prime[i] = 0
         p += 1
    c=0
    l = []
    for p in range(max(2,m), n+1):
        if prime[p]==1:
            l.append(p)
    for i in l:
        print(i)
    print('')
  • created

    Aug '18
  • last reply

    Aug '18
  • 4

    replies

  • 833

    views

  • 2

    users

  • 2

    likes

  • 1

    link

Then two options… use a faster sieve, or use a different algorithm.

import math
import sys
def main():

def is_prime(n):
    if n <= 1:
        return(0)
    if n == 2:
        return(1)
    if n > 2 and n % 2 == 0:
        return(0)

    max_div = math.floor(math.sqrt(n))
    for i in range(3, 1 + max_div, 2):
        if n % i == 0:
            return(0)
    return(1)
t=int(sys.stdin.readline())
for i in range(t):
    m, n=map(int, sys.stdin.readline().split())
    l=[]
    for n in range(m,n+1):
        if(is_prime(n)==True):
            l.append(n)
    for i in l:
        sys.stdout.write('%d\n'%i)
    sys.stdout.write('\n')

main()

Thanks brother for responding. Now i hv used another algo and again it is giving TLE…plz help me and it will be very kind of u if u suggest me a suitable algo for this question.