[Nimrod] Nim埃氏筛法 →→→→→进入此内容的聊天室

来自 4n0n4me, 2023-01-14, 写在 Nimrod, 查看 72 次.
URL http://www.code666.cn/view/44e0f3e5
  1. import strutils
  2.  
  3. from math import sqrt, floor
  4.  
  5. var
  6.     n = parseInt(readLine(stdin))
  7.     numbers: seq[Natural] = @[]
  8.     primes: seq[Natural] = @[]
  9.  
  10. for i in 2..n:
  11.     numbers.add(i)
  12.  
  13. var flag = true
  14.  
  15. var ip = 0
  16.  
  17. while flag:
  18.  
  19.     var p = numbers[ip]
  20.  
  21.     var newNumbers = numbers
  22.  
  23.     var deleted = 0 # 已经删去了几项
  24.  
  25.     for i, v in numbers:
  26.  
  27.         if v <= p:
  28.             primes.add(v)
  29.             newNumbers.delete(i - deleted)
  30.             deleted += 1
  31.  
  32.         elif v / p == floor(v / p): # 质数可以整除他自己,这不代表这个质数就是合数
  33.             newNumbers.delete(i - deleted)
  34.             deleted += 1
  35.  
  36.     numbers = newNumbers
  37.  
  38.     ip += 1
  39.  
  40.     if ip >= len(numbers): # 最大下标是长度减一
  41.         primes &= numbers # 用&连接
  42.  
  43.         flag = false # break
  44.  
  45. echo "---Result---"
  46.  
  47. echo primes
  48.  
  49.  

回复 Nim埃氏筛法 rss

标题 提交人 语言 时间
Re: Nim埃氏筛法 4n0n4me nimrod 1 年 前.

回复 "Nim埃氏筛法"

这儿你可以回复上面这条便签

captcha