19/07/04 21:46:08.05 rS60wicC.net
27 int Mult(int a, int b)
28 {
29 int dmm, r=0;
30
31 while(1)
32 {
33 if( !a ) return r;
34 a=DivMod(a,2,&dmm);
35 if( dmm ) r += b;
36 b += b;
37 }
38 }
39
40 int printf();
41
42 int a=5029, b=1, m=5039;
43 int k=0, x=1, t;
44
45 int main()
46 {
47 start: k=a;
48 loop: t=Mult(k,x); ループ:t = Mult(k、x);
49 DivMod(t,m,&x);
50
51 if( --k ) goto loop; gotoループ。
52 if( --a > b ) goto start;
53
54 printf("%d",x);
55 }
行1-25は、4.5で説明した分割アルゴリズムを実装していますが、再帰呼び出しを削除することで最適化され 。 >>34
乗算(27?38行目)は、4.5に示す式の直接的な実装です。 スレリンク(future板:71番)