ゲンゾウ用ポストイット

Java、Groovy、Linux関連の備忘録

素数を求める

エラトステネスの篩 - JavaScript版 at HouseTect, JavaScriptな情報をあなたにをGroovyで。

#!/usr/bin/env groovy
def findAllPrime(int max){
    assert max >= 2
    def list = 2..max
    
    def primeList = []
    while ( !primeList || (list && list.max() >= primeList.max()**2) ){
        def checkNum = list[0]
        primeList << checkNum
        list = list.findAll{ it%checkNum != 0 }
    }
    
    (list + primeList).sort() 
}

assert findAllPrime(2) == [2]
assert findAllPrime(10) == [2, 3, 5, 7]
assert findAllPrime(20) == [2, 3, 5, 7, 11, 13, 17, 19]

今日は仕事休み。長い間たまった振替休日を消化。

広告を非表示にする