gcd最大公約数を求める関数を2個はコップ本そのままでgcdYahasiは林さんの著書から拝借しました。gcdLoopではwhileの中にval temp = aと有りますが、tempは何個も出来ないんですかね?出来ないんであれば良いですが、出来たら困るですね。もう一つ大事なことがありました。引数で渡される値はvalだ、と言うことです。再代入される場合はvar aa = aとかしておかないと駄目ですね。林さんの著書はc言語ですが、そのままで変更されるようです。
関数型のプログラミングを目指す人には、中程のgcd(再帰型)がお勧めのようです。