@yuuuriiia 補足すると、cが無い場合を考えるとわかりやすいかも。
このループの中でやりたいことは2つで、次のループに入るまでに、
1. a = b;
2. b = a%b;
ってのをやりたい。でも、この2つはどっちを先にやっても、上手くいかないんだ。1 => 2とやっても、2 => 1とやっても、1か2のどちらかでaかbが変わってるから、望むような結果にならない。
なので、一時的に保存する変数が必要だよね〜ってことです。