#[環境]
Java version 16.0.1
VS Code
Mac OS Big Surの環境です。
java -version
java version "16.0.1" 2021-04-20
Java(TM) SE Runtime Environment (build 16.0.1+9-24)
Java HotSpot(TM) 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)
Tomis-MacBook:09_MinutesToYearsandDayCalculator $
#[やりたいこと]
ユークリッドの互除法を使った最大公約数を求めるコードを理解したいです。
二つの整数の最大公約数を求める演習をやっていてコードを書きました。
問題なくできたのですが、模範回答はユークリッドの互除法というアルゴリズムを使っているそうです。wikipediaでユークリッドの互除法をよみ、ユークリッドの互除法自体は理解したのですが、模範回答にあるコードが理解できません。
youtubeでユークリッドについてわかりやすく説明してくれている動画を見ました。https://youtu.be/246Yxl8gTVk
コードの流れをご教授いただけないでしょうか?
#[演習問題概要]
getGreatestCommonDivisorという最大公約数を求めるメソッドを書きましょう。
これは2つの引数があります。そしてタイプはintで名前はfirst とsecondです。
どちらかが10より小さい場合は -1が出るようにしてください。それが引数が適切ではないという印です。
#[エラー]
エラーではないので、エラーメッセージはありません。
#[学習状況]
progateを3巡、ドットインストール1巡、スッキリJavaの本を8割読みました。
現在、UdemyのJava Programming Masterclass for Software Developersというコースで演習問題に取り組んでいます。Java学習を初めて一ヶ月目が過ぎたところです。
ドットインストール、Udemyの演習はVScodeに書いてそのターミナルにコマンドを書いています。
この問題はUdemyでの演習19番目なので、まったくの初めてというわけではありません。
まだまだ初心者ですが真面目に取り組んでいるので、何卒、よろしくお願いします。
#[コード]
java
1public class GreatestCommonDivisor { 2 3 public static int getGreatestCommonDivisor(int first, int second) { 4 5 if (first < 10 || second < 10) { 6 return -1; 7 } 8 while (first != second) { 9 if (first > second) 10 first = first - second; 11 else { 12 second = second - first; 13 } 14 } 15 return second; 16 } 17}
#ちなみに、私のユークリッドを使わないコードは以下です。
java
1public class GreatCommonDivisor{ 2 public static int getGreatCommonDivisor(int n1, int n2){ 3 if(n1<10 || n2 <10){ 4 return -1; 5 } 6 7 int divisor=1; 8 for(int i=1 ; i<=n1; i++){ 9 if(n1%i==0 && n2%i==0){ 10 divisor = i; 11 } 12 } 13 return divisor; 14 } 15}
回答2件
あなたの回答
tips
プレビュー