こんにちは。
最近取り組んでいる「とある大学のC言語テスト問題」を通して関数を使えるようになってきたのですが、とある大学のC言語テスト問題はいっこうに解けません。
昨日行き詰まったのは、数字が大きくなりすぎてデータ型からあふれているのか、正しく計算できないという点でした。
データ型をlongにしてみたり、long long intにしてみたりしているのですが、なかなか上手くいきません。
そこで、ちょっと試しに大きくなりすぎた数字を小さくしてみることにしました。
約分します。
というわけで今日は”部品”を作ってみました。
まず、分子(numerator)と分母(denominator)の最大公約数(GCD/greatest common divisor)を求めて、分子と分母それぞれをGCDで割るという計算です。
約分なんて小学生もできるから簡単だと思いきや、よくよく考えると結構複雑でした。
約分する度に「最大公約数...ユークリット互除法...」とか考えている小学生はいないと思いますが、
小学校算数なめてました。
0コメント