while True:

問題17

1 から N までのすべての素数を求めるプログラムをつくれ.ただし、𝑁 ≤ 100としてよい。

難易度 ★★☆☆☆

簡単な問題です。プログラミングが苦手で大変という人のための救済問題だと捉えています。 素数をどのように判定するかがポイント。素数は自身の数と1以外で割ることのできない整数です。それさえわかれば実装は簡単ですね。 ほかにもいろいろな判定法がありますが、ここでは一番簡単な方法で実装します。2からその数-1の数で割れた時点で素数ではなく、逆に割ることができなければ素数です。 実は、その数-1まで検索する必要はなく、半分まで調べれば実は十分であることに気が付ければ...!
program question17
	implicit none
	integer :: n, i, j
	logical :: check

	print *, "input n:"
	read *, n

	do i = 2, n
		check = .true.
		do j = 2, (i / 2)
			if (mod(i, j) == 0) then
				check = .false.
			end if
		end do
		if (check) then
			print *, i
		end if
	end do

end program question17
ページのトップへ戻る