import math, sequtils proc simple(limit: int): seq[int] = var isPrime = newSeq[bool](limit + 1) for i in 0..limit: isPrime[i] = true isPrime[0] = false isPrime[1] = false for i in 2..int(sqrt(float(limit))): if isPrime[i]: var j = i * i while j <= limit: isPrime[j] = false j += i result = @[] for i, prime in isPrime: if prime: result.add(i) proc segmented(L, R: int): seq[int] = let limit = int(sqrt(float(R))) let primes = simple(limit) var isPrime = newSeq[bool](R - L + 1) for i in 0..= 2): result.add(i + L) let L = 10 let R = 500000000 echo segmented(L, R)