問
1~100の数字の中から、素数を出力するコードを書きなさい
結論と解説
コード
num = [*1..100] # 1~100の数をもつ配列numを作成
non_prime_number = [] # 素数ではない数を入れるように空の配列non_prime_numberを作成
num.each do |n| # numに対してeachを回し、素数ではない数を探す
non_prime_number << n if n == 1 # 1は素数ではない
# 2は素数なので処理なし
if n >= 3
i = 1 # while文内で使う
while true # 無限ループを作る
i += 1 # iは2からスタートさせる
# iを2~nで変化させ、n / iの余りが0であったらnは素数と判定
non_prime_number << n if n % i == 0
# iがnのひとつ前の数になるか、nが素数でない数であったらループ終了
break if i == n -1 || n % i == 0
end
end
end
# 全ての数から素数でない数を引いて出力
puts num - non_prime_number
出力結果
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
日記的メモ
転職活動において、面接で出されたコーディングテストです。
面接時に答えられなかったので、復習のために作成しました。
こういった数学の有名な数列について作成できるようにしとかなきゃな~と思いました。