素数は「1と自分自身しか約数がない数」なので,n>=2の時「n-1以下のnの約
数が1だけしかない数」と等しい.「n-1以下のnの約数が1だけしかない」ならば
「n-1以下のnの約数の和」は1であり,かつその時に限るので,以下のように書け
る.
load("./sod.rb")
def prime(n)
sod(n,n-1)==1
end
実行してみると
irb(main):009:0> prime(1)
=> true
irb(main):010:0> prime(2)
=> true
irb(main):011:0> prime(3)
=> true
irb(main):012:0> prime(4)
=> false
irb(main):013:0> prime(5)
=> true
irb(main):014:0> prime(6)
=> false
irb(main):015:0> prime(7)
=> true
irb(main):016:0> prime(8)
=> false
irb(main):017:0> prime(9)
=> false
irb(main):018:0> prime(10)
=> false
となり,2以上の整数に関しては正しい値を返します.1でfalseとしたければ,
load("./sod.rb")
def prime(n)
sod(n,n-1)==1 && n>=2
end
などとすれば良いです.
def prime(n)
sod(n,n)==n+1
end
としていた回答もあり,これも正しい答えです.