Bashでn以下の素数一覧を表示する(シェルスクリプト入門)




素数か判定したい値を読み取ります。

read n




2~nまでのループを行います。
素数か否かを判定するための変数を設定します。
今回は変数primeが1の時に素数、0の時に素数ではないとします。
予め1を設定しておき、指定した数が素数ではなかった場合に0を代入します。

for ((i = 2; i <= $n; i++)) ; do
	prime=1
done




forループの中にさらにforループを入れて、二重ループにします。
2つの条件を用意して、素数かどうかを判定します。

  • 変数iをjで割った時の余りが0
  • 変数iとjが同じではない

これら2つの条件を満たした時、素数ではないということになります。
素数かどうかを判定するための変数primeに0を代入します。

#!/bin/bash
for ((i = 2; i <= $n; i++)) ; do
	prime=1
	for ((j = 2; j <= $n; j++)) ;do
		if [ $((i % j)) -eq 0 ] && [ $i -ne $j ] ; then
			prime=0
		fi
	done
done




最後に、変数primeが1の時に素数を表示します。

#!/bin/bash
read n

for ((i = 2; i <= $n; i++)) ; do
	prime=1
	for ((j = 2; j <= $n; j++)) ;do
		if [ $((i % j)) -eq 0 ] && [ $i -ne $j ] ; then
			prime=0
		fi
	done
	if [ $prime -eq 1 ] ; then
		echo $i
	fi
done


実行結果 ※入力値に100を設定

100
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