LoginSignup
3
3

More than 5 years have passed since last update.

[Groovy]素数判断

Posted at

最近Groovyを触っていなかったのでなんとなく素数を求めてみた。

def isPrimeNumber = { Integer num ->
    num >= 2 ? (2..<num).every{num % it} : false
}

assert isPrimeNumber(2)
assert isPrimeNumber(3)
assert isPrimeNumber(5)
assert isPrimeNumber(7)
assert isPrimeNumber(11)
assert isPrimeNumber(4) == false

コレだけだと普通なので、自分が今回一番最初に書いたコードも残しておく。以下の通り。

def isPrimeNumber = { Integer num ->
    def r = (2..num).collect{
        num % it == 0
    }
    r.findAll{it == true}.size() == 1
}

なんかもっとスマートにできないのか。。。?と思い以下のように修正

def isPrimeNumber = { Integer num ->
    (2..<num).every{ num % it }
}

で、2未満の値が渡された際にfalseを返すようにした。それが今回最初に提示したコード。
余談になるけどクロージャの引数にちゃんとInteger型として明示してあるので、クロージャの中で渡された値が本当に数値なのかをチェックする必要はない。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3