質問するログイン新規登録

回答編集履歴

2

追記

2018/11/24 13:22

投稿

LouiS0616
LouiS0616

スコア35680

answer CHANGED
@@ -26,4 +26,10 @@
26
26
  安直ですが、何ともレガシーで残念な感じになります。
27
27
  0. **メソッドを早期に脱出する方法**
28
28
  合成数であることが分かった時点で、returnする方法です。
29
- 素数判定自体を別のメソッドに切り出せば、さらに見通しの良いコードになります。
29
+ 素数判定自体を別のメソッドに切り出せば、さらに見通しの良いコードになります。
30
+
31
+ コードの書き方について
32
+ ---
33
+ teratailには、コードを見やすく表示する機能があります。
34
+ 質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
35
+ ![Java](f4ed904eff3506b68bb6e4c2b205ebd1.gif)

1

追記

2018/11/24 13:22

投稿

LouiS0616
LouiS0616

スコア35680

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