明日の関西コミティア42に、月うさぎプロジェクトとして参加します。
チラシ印刷とデモ版CDの焼き作業中ですが、休憩中に書いてみました。ネタです。
概要
- アルゴリズムとしてユークリッドの互除法を使用し、2数の最大公約数を求めます。
- Wikipediaの記事を参考にしました。
実装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
@macro name="gcd"
;[emb exp="'num1:' + mp.num1 + ' num2:' + mp.num2"][r]
@if exp="mp.num1 < mp.num2"
@eval exp="mp.tmp = mp.num2"
@eval exp="mp.num2 = mp.num1"
@eval exp="mp.num1 = mp.tmp"
@endif
@if exp="mp.num2 == 0"
@emb exp="mp.num1"
@else
@eval exp="mp.tmp = mp.num2"
@eval exp="mp.num2 = mp.num1 % mp.num2"
@eval exp="mp.num1 = mp.tmp"
@gcd *
@endif
@endmacro
1071 と 1029 の最大公約数は
@gcd num1=1071 num2=1029
です。
|