[c言語] ユークリッドの互除法を関数を使って解いてみよう!

C言語

だいぶ前のことになりますが、ユークリッドの互除法をメイン関数だけを用いて解いてみたことはありますが、今回は関数を利用して解こうと思います。

では早速解いてみましょう。

参考までに↓↓↓↓↓↓↓

gcd関数を定義してユークリッド互除法を解く

gcd関数を定義して利用したコード

#include <stdio.h>

int gcd(int a,int b){

  int r;

  while(r!=0){
    r=a%b;
    a=b;
    b=r;
  }

  return a;

}

int main(void){

  int a,b;

  printf("整数a: "); scanf("%d",&a);
  printf("整数b: "); scanf("%d",&b);

  printf("%dと%dの最大公約数は%dです\n",a,b,gcd(a,b));

  return 0;

}

/* 実行結果
整数a: 128
整数b: 72
128と72の最大公約数は8です
*/

gcd関数を利用しない場合

#include <stdio.h>

int main(void){

  int a,b,r;

  printf("整数a: "); scanf("%d",&a);
  printf("整数b: "); scanf("%d",&b);

  while(r!=0){
    r=a%b;
    a=b;
    b=r;
  } 

  printf("最大公約数は%dです\n",a);

  return 0; 

}

/* 実行結果
整数a: 128
整数b: 72
128と72の最大公約数は8です
*/

関数を利用する場合と利用しない場合を比べるとメイン文が短くなり、みやすくなっていますね。

なので、メイン文の部分を長くしないように関数を定義できるようになるといいですね。

以上で終了となります。ありがとうございました。

コメント

タイトルとURLをコピーしました