• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:java初心者です。どうかよろしくお願いします。)

【Java初心者】最大公約数と最小公倍数を求めるプログラムでエラーが発生する

このQ&Aのポイント
  • java初心者が最大公約数と最小公倍数を求めるプログラムを作成しましたが、実行時にエラーが発生します。
  • エラーメッセージは「Exception in thread 'main' java.lang.ArithmeticException: / by zero」で、原因が分かりません。
  • どなたか解る方がいらっしゃいましたら、助けていただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

N04 さんの書かれた ものでいいですが、 あえて、質問者さんの意図をくめば 最小公倍数は 元の数字の積を最大公約数で割った数だから public int getGCD() { return (aa*bb)/getLCM(); } って定義すればいいわけです。

applebirdlove
質問者

補足

質問の意図を汲んでいただいて感謝します。 もう素人すぎて本当に申し訳ないのですが、御呈示頂いた定義は public int late(){ return i; } の部分を public int getGCD() { return (aa*bb)/getLCM(); } に変更するという意味合いでよろしいのでしょうか? 質問ばかりで本当に申し訳ありません。

その他の回答 (7)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.8

「掛けてから割る」よりも「割ってから掛ける」方が安全かな. ど~でもいいかもしれんけど.

applebirdlove
質問者

お礼

ヒントをありがとうございました。 参考にさせて頂きます。

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.7

> 最小公倍数は 元の数字の積を最大公約数で割った数 がーん,知らなかった… http://homepage1.nifty.com/moritake/sansu/6/05baisu-yakusu.htm 私にとって回答した以上の収穫でした,ありがとうございます。

回答No.6

No5 の 差し替えは、 No4 さんのコードにたいしてです。

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.4

ideone参照だけじゃなくソースを載せることにしました。 class Pair_PositiveNumber { private int aa, bb; Pair_PositiveNumber(int x, int y) { if (x <= 0) { x = 1; } if (y <= 0) { y = 1; } if (x > y) { aa = x; bb = y; } else { aa = y; bb = x; } } public int getLCM() { int a = aa, b = bb, r; while (b > 0) { r = a % b; a = b; b = r; } return a; } public int getGCD() { int a = aa, b = bb; while (a != b) { if (a > b) { b += bb; } else { a += aa; } } return a; } } class Q7633163 { public static void main(String[] args) { int a = 8; int b = 12; Pair_PositiveNumber pair = new Pair_PositiveNumber(a, b); System.out.println("LCM = " + pair.getLCM()); System.out.println("GCD = " + pair.getGCD()); } }

applebirdlove
質問者

お礼

わざわざソースまで書き出して下さったことに本当にありがとうございました。 引き続き勉強すると共に参考にさせて頂きます。

applebirdlove
質問者

補足

ソースまで御呈示頂いて感謝いたします。 自分で書いていて本当に迷子になってしまいました。 最大公約数と最小公倍数の継承になぜ?という部分なのですが、自分でもよく解らずに教科書の問いに挑戦した次第でございます。 さらに、キーボード入力による出力表示も上乗せで出題されていてパニック状態です。。。

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.3

最大公約数と最小公倍数の関係が「なんで継承?」(ANo.2) という意見に私も賛成。 http://ideone.com/XCUh3

回答No.2

なんかめちゃくちゃですね。 i = (x * y) /r; の r なにも意味をなしません。 なんで、継承する必要が???

applebirdlove
質問者

お礼

めちゃくちゃなソースに対してのアドバイス感謝します。 ありがとうございました。

applebirdlove
質問者

補足

なにがどうめちゃくちゃなのかさえ分からないくらいど素人な故に本当に申し訳ございません・・・。

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  私もJavaは詳しくありませんが、実行してみました。  結果) 1st?8 2nd?24 Exception in thread "main" java.lang.ArithmeticException: / by zero at LcmGcm.<init>(sample.java:22) at sample.main(sample.java:37)  ここで1行目のエラーは「0で除算した」と言う意味です。  2行目以降はエラーの発生に関連する行です。  22行目でrで割っていますが、初期化していないのが原因ではないでしょうか。 では。

applebirdlove
質問者

お礼

お礼遅くなりました。 参考にさせて頂きました。 ありがとうございました。

applebirdlove
質問者

補足

ここで1行目のエラーは「0で除算した」と言う意味です。  2行目以降はエラーの発生に関連する行です。            ↑ なるほど!こんなエラーは初めて見たので勉強になりました。 ありがとうございました。

関連するQ&A