Perlでユークリッドの互除法
簡単そうだったんで、wikipediaの最初の説明だけみて実装。
#!/usr/bin/env perl use strict; use warnings; my ($x, $y) = (1071, 1029); print euclidean($x, $y), "\n"; sub euclidean { my ($x, $y) = @_; my $r = $x % $y; return $y if $r == 0; return euclidean($y, $r); }
いかんいかん。再帰なんかいらないじゃないか。
sub euclidean { my ($x, $y) = @_; while(my $r = $x % $y){ ($x, $y) = ($y, $r); } return $y; }