素数を求める (ver.5)

明解C言語 入門編 > 5. 配列 >

素数を求める (ver.5)

Ruby
prime   = []
counter = 0

prime[0] = 2
prime[1] = 3
ptr      = 2

no = 5
while (no <= 30)
    j = 0
    i = 1
    loop do
        counter += 1
        break if (prime[i] * prime[i] > no)

        counter += 1
        if (no % prime[i] == 0)
            j = 1
            break # 割り切れるので、素数ではない
        end
        i += 1
    end

    if (j == 0)
        prime[ptr] = no  # 最後まで割り切れなかったので、素数
        ptr += 1
    end

    no  += 2
end

prime.each do |p|
    print "#{p}\n"
end    

print "計算を行った回数:#{counter}\n"

実行結果

L:\>ruby l:\lesson_05_042.rb
2
3
5
7
11
13
17
19
23
29
計算を行った回数:34