回答編集履歴

2

追記

2018/11/24 13:22

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -55,3 +55,15 @@
55
55
  合成数であることが分かった時点で、returnする方法です。
56
56
 
57
57
  素数判定自体を別のメソッドに切り出せば、さらに見通しの良いコードになります。
58
+
59
+
60
+
61
+ コードの書き方について
62
+
63
+ ---
64
+
65
+ teratailには、コードを見やすく表示する機能があります。
66
+
67
+ 質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
68
+
69
+ ![Java](f4ed904eff3506b68bb6e4c2b205ebd1.gif)

1

追記

2018/11/24 13:22

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -9,3 +9,49 @@
9
9
  $ java keisan 10
10
10
 
11
11
  ```
12
+
13
+
14
+
15
+ コメントを受けて
16
+
17
+ ---
18
+
19
+ > ソースコードが間違っているようで、1は素数です。と表示されてしまいます。
20
+
21
+
22
+
23
+ インデントを揃えて良く観察すれば理由は自然と分かります。
24
+
25
+ > ```Java
26
+
27
+ for (i = 2; i <= n - 1; i++){
28
+
29
+ if (n % i == 0) {
30
+
31
+ System.out.println(n + " は素数ではありません。");
32
+
33
+ }
34
+
35
+ }
36
+
37
+ System.out.println(n + " は素数です。");
38
+
39
+ > ```
40
+
41
+
42
+
43
+ これだとfor文内部の処理に全く関係なく、最終行が実行されます。
44
+
45
+ 修正の方針は主に二つです。
46
+
47
+ 0. **フラグを使う方法**
48
+
49
+ 合成数であることが分かった時にフラグを立てる方法です。
50
+
51
+ 安直ですが、何ともレガシーで残念な感じになります。
52
+
53
+ 0. **メソッドを早期に脱出する方法**
54
+
55
+ 合成数であることが分かった時点で、returnする方法です。
56
+
57
+ 素数判定自体を別のメソッドに切り出せば、さらに見通しの良いコードになります。