エラトステネスのふるい
差分
このページの2つのバージョン間の差分を表示します。
| エラトステネスのふるい [2010/02/13 13:03] – 外部編集 127.0.0.1 | エラトステネスのふるい [2013/06/11 13:30] (現在) – 削除 nullpon | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | ====== エラトステネスのふるい ====== | ||
| - | <code ruby> | ||
| - | x = 10001000 | ||
| - | sample_numbers = (2 .. x).to_a | ||
| - | prime_numbers = [2] | ||
| - | |||
| - | while not sample_numbers.empty? | ||
| - | |||
| - | max_prime_number = prime_numbers.last | ||
| - | |||
| - | # 素数で割れるものを除外 | ||
| - | sample_numbers = sample_numbers.reject { |i| | ||
| - | i % max_prime_number == 0 | ||
| - | } | ||
| - | | ||
| - | # 残ったものの最初の数が素数 | ||
| - | prime_numbers << sample_numbers.shift | ||
| - | | ||
| - | # 検査する数の最後が、最大の素数の平方より小さければ、残りは全部素数 | ||
| - | if sample_numbers.last < prime_numbers.last ** 2 | ||
| - | prime_numbers << sample_numbers | ||
| - | prime_numbers.flatten! | ||
| - | break | ||
| - | end | ||
| - | end | ||
| - | |||
| - | prime_numbers.each do |p| | ||
| - | puts p | ||
| - | end | ||
| - | </ | ||
エラトステネスのふるい.1266066226.txt.gz · 最終更新: (外部編集)