動作環境はWindowsVista C++ 2008です。
正の整数aとbの最大公約数を求める関数です。
#include <stdio.h>
int gcd(int a, int b) {
int r = a % b;
if (r = 0)
return(b);
else
a = b, b = r;
return(a);
}
int main(void) {
int a,b,c;
printf(二つの整数を入力してください\n);
scanf(%d %d,&a,&b);
c = gcd(a, b);
printf(%dと%dの最大公約数=%d\n,a,b,c);
return (0);
}
このように、ある程度できたのですが
どこかが間違っているらしく動いてくれません。
おそらく前半部分に間違いがあると思うのですが、
自分にはわからずお手上げ状態です。
どなたか、わかる方がいらっしゃったらご教授下さい。
こまかいことは別として こんぽんてきには再帰をつかうのが常套手段
loopなしには求められんでしょうね
int gcd(int a, int b)
{
while ( b ) {
int t = a % b;
a = b;
b = t;
}
return a;
}
> こんぽんてきには再帰をつかうのが常套手段
んなこたーない。
επιστημη様
お答え頂きありがとうございました。
#include <stdio.h>
int gcd(int a, int b)
{
while ( b ) {
int t = a % b;
a = b;
b = t;
}
return (a);
}
int main(void) {
int a,b,c;
printf(二つの整数を入力してください\n);
scanf(%d %d,&a,&b);
c = gcd(a, b);
printf(%dと%dの最大公約数=%d\n,a,b,c);
return (0);
}
これで問題なく動きました。
再帰使うと:
int gcd(int a, int b) {
return b ? gcd(b, a%b) : a;
}