最大公倍数を求める問題

[戻る]
けろん [E-Mail] 2001/05/14(月) 14:14:08
帰納式で

           gcd(b,a%b) (a%b=0 以外)  
gcd(a,b)={
        b         (a%b=0)

ので
48 と 40の
最大公約数=8


というのを求めるC言語をおしえてください

koichi [E-Mail] 2001/05/17(木) 23:57:02
再起させるのが一番手っ取り早いかと思います。
mainなどから
gcd(48, 40)
などと呼べばこの関数で求まります。

void gcd(int a, int b)
{
        int x;
        x = a % b;

        if(x != 0) gcd(b, x);
        else printf("%d", b);
}

あまりよいプログラムではありませんが、参考になればと思います。
他の関数でこの値が必要ならば、xをグローバル変数にするか、
関数gcdをint型にし、少し変えればよいと思います。

けろん 2001/05/22(火) 13:25:11
ありがとうございます やってみます

けろん 2001/05/22(火) 13:57:17
48 40 をそれぞれ入力するときには#include<stdio.h>
  void gcd(int a, int b)
  {
        int x;
        x = a % b;

        if(x != 0) 
            gcd(b, x);
        else printf("%d", b);
  } 

 void main()
  { int x,a,b;

  printf("整数データa b を入力してください>");

 scanf("%d  %d ",  &a, &b);
      printf("%d と  %d の最大公約数=    ", a,   b, x);
 }


として
実行して 40 48
と置いたのですが、
これでは動かなかったのですが
なにがいけなかったのでしょうか?

Mami 2001/05/22(火) 15:18:30
main() で gcd() を呼びましょう。

古いスレッドには追加発言できません。