2020年2月8日土曜日

200208(2)

Crystal


A006880とA046731(2)

10^n までの素数の数と和を出力してみた。

require "big"

def a006880(n)
  max = 10 ** n - 1
  ary = Array.new(max + 1, true)

  i = 2
  while i * i <= max
    if ary[i]
      (2 * i).step(to: max, by: i){|j| ary[j] = false}
    end
    i += 1
  end

  s = 0.to_big_i
  (2..max).each{|i| s += 1 if ary[i]}
  p s
end

def a046731(n)
  max = 10 ** n - 1
  ary = Array.new(max + 1, true)

  i = 2
  while i * i <= max
    if ary[i]
      (2 * i).step(to: max, by: i){|j| ary[j] = false}
    end
    i += 1
  end

  s = 0.to_big_i
  (2..max).each{|i| s += i if ary[i]}
  p s
end

n = 8
p (0..n).map{|i| a006880(i)}
p (0..n).map{|i| a046731(i)}

出力結果
0
4
25
168
1229
9592
78498
664579
5761455
[0, 4, 25, 168, 1229, 9592, 78498, 664579, 5761455]
0
17
1060
76127
5736396
454396537
37550402023
3203324994356
279209790387276
[0, 17, 1060, 76127, 5736396, 454396537, 37550402023, 3203324994356, 279209790387276]

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。