短いcodeが好ければどうぞ。trickyじゃないcode golfでもない短いMobius函數 (メビウス関数) です。
# encoding=utf-8 # license: Public Domain def mobius n (2 .. n).reduce(1) do |current, prime| if n % prime == 0 current = -current n /= prime end break current if n == 1 break 0 if n % prime == 0 current end end p mobius(3 * 19 * 19 * 23) == 0 p mobius(3 * 19 * 23) == -1 p mobius(3 * 19 * 23 * 151) == 1
cf. Elixir (とJavaScriptとRuby) でMöbius関数を実装した http://c4se.hatenablog.com/entry/2013/07/12/210747
cf. Haskell (とElixir) でもMöbius関数を実装した http://c4se.hatenablog.com/entry/2013/07/14/185745