問題1-9
for文を利用して、10から100までの自然数の中から素数であるものを表示してください。
素数とは、1とその数以外のどんな自然数によっても割り切れない1より大きな自然数のことです。
【実行結果】
11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
【ForNormalPractice.java】
public class ForNormalPractice { public static void main(String[] args) { // for文の開始 } }
解答例
【ForNormalPractice.java】
public class ForNormalPractice { public static void main(String[] args) { // for文の開始 outer: for(int i = 10; i <= 100; i++) { for(int j = 2; j < i; j++) { if(i % j == 0) { continue outer; } } System.out.println(i); } } }
解説
解答例では問題文の指示通り、まず10から100までのループを回しています。
その後にその数値が素数であるかを調査するのですが、よくよく考えると2以外の偶数が素数なわけありませんから(常に2で割り切れるため)、最初のループは次のように記述して良いはずです。
for(int i = 11; i <= 99; i += 2;) {
今回の解答例では、ループを頭から再スタートするcontinue文を使ってみました。
ループを強制的に終了するbreak文はよく使用されますが、continue文はうまく使うとプログラムがスッキリと簡潔になる場合がありますので、是非知っておいてください。
あと、あまり知られていませんが、Javaには「ラベル」という便利なモノがあります。
これは簡単に言うと、「特定のループに名前をつけること」です。
break文やcontinue文はそのまま記述すると、より関係性の近いループ(ネストしている場合は内側のループ)に作用します。
もしループをネストしていて、外側のループに対してbreak文やcontinue文を作用させたい場合は、外側のループにラベルを使って名前をつけてあげて、そのラベル名を指定してあげます。
ラベルの付け方は簡単で、ループの前に好きなラベル名をつけて後ろにコロンを書きます。
そしてbreak文やcontinue文の後に対象とするラベル名を記述してあげます。
Javaにはgoto文がないのは有名な話なのですが、ラベルをうまく使うことでgoto文のメリットを享受することが可能になります。
是非覚えておきましょう。
参考図書
LINE公式アカウント
仕事が辛くてたまらない人生が、仕事が楽しくてたまらない人生に変わります。
【登録いただいた人全員に、無料キャリア相談プレゼント中!】