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

回答編集履歴

2

複数行のためのループを忘れてた

2016/01/13 02:10

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -8,12 +8,14 @@
8
8
 
9
9
  public static void main(String[] args) {
10
10
  Scanner data = new Scanner(System.in);
11
+ while(data.hasNextLong()){
11
- long a = data.nextLong();
12
+ long a = data.nextLong();
12
- long b = data.nextLong();
13
+ long b = data.nextLong();
13
- long gcd = gcd(a, b);
14
+ long gcd = gcd(a, b);
14
- long lcm = a * b / gcd;
15
+ long lcm = a * b / gcd;
15
16
 
16
- System.out.println(gcd+" "+lcm);
17
+ System.out.println(gcd+" "+lcm);
18
+ }
17
19
  }
18
20
  }
19
21
 

1

回答変更、再帰のススメ

2016/01/13 02:10

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -1,2 +1,25 @@
1
+ ozwkさんの回答がまさにその通りだと思いますね。
1
- 標準入力からの入力、Scannerの判が意図したものでなかもしれせん
2
+ 個人的にはこういう紛れをなくすためにも再帰関数で定したほうが良と思い
3
+
4
+ ```java
5
+ import java.util.Scanner;
6
+
7
+ public class Main {
8
+
9
+ public static void main(String[] args) {
10
+ Scanner data = new Scanner(System.in);
11
+ long a = data.nextLong();
12
+ long b = data.nextLong();
13
+ long gcd = gcd(a, b);
14
+ long lcm = a * b / gcd;
15
+
16
+ System.out.println(gcd+" "+lcm);
17
+ }
18
+ }
19
+
2
- whileの判定を`hasNextInt()`にしてみるとどうでしょうか?
20
+ public static long gcd(long a, long b){
21
+ return b == 0 ? a : gcd(b, a % b);
22
+ }
23
+
24
+ }
25
+ ```