import strutils from math import sqrt, floor var n = parseInt(readLine(stdin)) numbers: seq[Natural] = @[] primes: seq[Natural] = @[] for i in 2..n: numbers.add(i) var flag = true var ip = 0 while flag: var p = numbers[ip] var newNumbers = numbers var deleted = 0 # 已经删去了几项 for i, v in numbers: if v <= p: primes.add(v) newNumbers.delete(i - deleted) deleted += 1 elif v / p == floor(v / p): # 质数可以整除他自己,这不代表这个质数就是合数 newNumbers.delete(i - deleted) deleted += 1 numbers = newNumbers ip += 1 if ip >= len(numbers): # 最大下标是长度减一 primes &= numbers # 用&连接 flag = false # break echo "---Result---" echo primes