裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

ユークリッドの互除法の計算過程

2014年11月11日 | ブログラミング

1 から整数 n までの間の数から二数を選びユークリッドの互除法で最大公約数を求めるとき,割り算の回数が最大になる二数の組み合わせを求めよ

いくつかの n について,答の二数を求め,その二数にユークリッドの互除法を適用したときの二数の変化の様子を書き出してみる。例えば n = 100 のときは (89, 55) というのが一つの解。

回数        x         y
9          89        55
8          55        34
7          34        21
6          21        13
5          13         8
4           8         5
3           5         3
2           3         2
1           2         1

これが除算回数が一番多いのならば,次に除算回数が大きい二数は?(89+55, 89) = (144, 89)

つまり,二数は,
a[1] = 1
a[2] = 2
a[n]=a[n-1]+a[n-2],  n ≧ 3 という数列の相隣り合う二数ということである。

結論:以下のような数表を下から上に見ていけばよい。n = 1234567890 であっても,高々これだけの計算をしてやればよいだけ。

            x         y
43 1134903170 701408733
42  701408733 433494437
41  433494437 267914296
40  267914296 165580141
39  165580141 102334155
38  102334155  63245986
37   63245986  39088169
36   39088169  24157817
35   24157817  14930352
34   14930352   9227465
33    9227465   5702887
32    5702887   3524578
31    3524578   2178309
30    2178309   1346269
29    1346269    832040
28     832040    514229
27     514229    317811
26     317811    196418
25     196418    121393
24     121393     75025
23      75025     46368
22      46368     28657
21      28657     17711
20      17711     10946
19      10946      6765
18       6765      4181
17       4181      2584
16       2584      1597
15       1597       987
14        987       610
13        610       377
12        377       233
11        233       144
10        144        89
9          89        55
8          55        34
7          34        21
6          21        13
5          13         8
4           8         5
3           5         3
2           3         2
1           2         1

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村