素数か判定したい値を読み取ります。
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