ユークリッド互除法を…
先生「ユークリッド互除法を,何の言語でもいいから実装してみて下さいね」
と言ってRubyでの実装を見せてくれました.
Rubyは知らないですけどw
ということで,C++でユークリッド互除法を実装してみました.
#include <iostream> // maxを求める(別に三項演算子でもいいけどw) template<int IL, int IR> struct f_max { enum { result = IL > IR ? IL : IR }; }; // minを求める template<int IL, int IR> struct f_min { enum { result = IL < IR ? IL : IR }; }; // 実装 template<int IL, int IR> struct f_gcd_impl { enum { result = f_gcd_impl<IR, IL % IR>::result }; }; // 小さい方が0なら終わり template<int IR> struct f_gcd_impl<IR, 0> { enum { result = IR }; }; // gcdメイン template<int IL, int IR> struct f_gcd { enum { result = f_gcd_impl< f_max<IL, IR>::result, f_min<IL, IR>::result >::result }; }; int main(){ std::cout << f_gcd<72, 132>::result << estd::endl; // 12 return 0; }
なんとか動いているようです.
普通に三項演算子とか%とか使えるから結構簡単にできました.