アプリ版:「スタンプのみでお礼する」機能のリリースについて

a,bの最大公約数を求める関数をつくってみたのですが、aまたはbが零の時の処理としては、どのようにするのが適当かがわかりません。ある数と零の最大公約数ってどうなるんでしょうか?

#include <iostream>
using namespace std;

// 整数 a, b の最大公約数を求める
int gcd(int a, int b) {
if(b == 0) return -1; // この戻り値は適当なのか?
int r = a % b;// aをbで割った余り
if ( r == 0 )
return b; // 余りが0ならbが最大公約数である
else
return gcd(b,r);// 余りが0でなければbとrの最大公約数を返す
}

int main() {
cout << "gcd(1000,100) = " << gcd(1000, 100) << endl;

return 0;
}

A 回答 (2件)

数学的にいうと, 「a (≠ 0) と 0 の最大公約数」は定義するなら a. a = 1・a, 0 = 0・a とどちらも「a の倍数」といえますね.


とはいうけど, 別に「数学的な定義」に従う必要はないので「別のものがいい」ということであるならそれを妨げるものではありません.
    • good
    • 0

数学的にありえないから例外の投げるのが良いのでは。


何もしなくてもDIV/0が発生しますけど。

また、負を返すと異常を表すか決めてるなら、それもアリかと。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!