ヤコビ記号

提供: testwiki
ナビゲーションに移動 検索に移動
縦 n 横 k 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 1
3 0 1 −1
5 0 1 −1 −1 1
7 0 1 1 −1 1 −1 −1
9 0 1 1 0 1 1 0 1 1
11 0 1 −1 1 1 1 −1 −1 −1 1 −1
13 0 1 −1 1 1 −1 −1 −1 −1 1 1 −1 1
15 0 1 1 0 1 0 0 −1 1 0 0 −1 0 −1 −1
17 テンプレート:00 テンプレート:01 1 −1 テンプレート:01 −1 −1 −1 1 テンプレート:01 −1 −1 −1 1 −1 1 1

さまざまなk(列)とn(行)でのヤコビ記号 テンプレート:Bigテンプレート:Sfracテンプレート:Big 。後述する規則(2)によりkはnを法として小さくすることができるため、テンプレート:Nowrap の場合のみ示す。平方剰余は黄色で強調される。-1のヤコビ記号となる数は平方剰余ではなく、k が互いに素なnを法とする平方剰余である場合、 テンプレート:Nowrapとなる。しかし、ヤコビ記号が1となる数(テンプレート:Nowrapテンプレート:Nowrap の列参照)は全てが平方剰余ではないことに注意。また、n または k のいずれかが平方数である場合、すべての値が非負となることに注意。

ヤコビ記号は、ルジャンドル記号の一般化である。ヤコビにより1837年に導入された[1]合同算術数論の他の分野で理論的に興味深いものであるが、主な用途は計算数論、特に素数判定及び素因数分解である。これらは暗号理論においても重要である。

定義

任意の整数 a と任意の正の奇整数 n に対して、ヤコビ記号 テンプレート:Bigテンプレート:Sfracテンプレート:Bign の素因数に対応するルジャンドル記号の積として定義される。

(an)=(ap1)α1(ap2)α2(apk)αk,

ここで

n=p1α1p2α2pkαk

nの素因数分解である。

ルジャンドル記号 テンプレート:Bigテンプレート:Sfracテンプレート:Big は全ての整数 a と全ての奇素数 p に対して次のように定義される。

(ap)={0if a0(modp),1if a≢0(modp) and for some integer x:ax2(modp),1if a≢0(modp) and there is no such x.

空積での通常の慣例に従い、テンプレート:Bigテンプレート:Sfracテンプレート:Big = 1とする。

下の引数が奇素数である場合、ヤコビ記号はルジャンドル記号と同じである。

n ≤ 59, k ≤ 30で n が奇数のときのヤコビ記号 テンプレート:Bigテンプレート:Sfracテンプレート:Big の値の表

縦 n 横 k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
1 テンプレート:01 1 1 テンプレート:01 1 1 1 1 テンプレート:01 1 1 1 1 1 1 テンプレート:01 1 1 1 1 1 1 1 1 テンプレート:01 1 1 1 1 1
3 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0
5 1 −1 −1 1 0 1 −1 −1 1 0 1 −1 −1 1 0 1 −1 −1 1 0 1 −1 −1 1 0 1 −1 −1 1 0
7 1 1 −1 1 −1 −1 0 1 1 −1 1 −1 −1 0 1 1 −1 1 −1 −1 0 1 1 −1 1 −1 −1 0 1 1
9 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0
11 1 −1 1 1 1 −1 −1 −1 1 −1 0 1 −1 1 1 1 −1 −1 −1 1 −1 0 1 −1 1 1 1 −1 −1 −1
13 1 −1 1 1 −1 −1 −1 −1 1 1 −1 1 0 1 −1 1 1 −1 −1 −1 −1 1 1 −1 1 0 1 −1 1 1
15 1 1 0 1 0 0 −1 1 0 0 −1 0 −1 −1 0 1 1 0 1 0 0 −1 1 0 0 −1 0 −1 −1 0
17 1 1 −1 1 −1 −1 −1 1 1 −1 −1 −1 1 −1 1 1 0 1 1 −1 1 −1 −1 −1 1 1 −1 −1 −1 1
19 1 −1 −1 1 1 1 1 −1 1 −1 1 −1 −1 −1 −1 1 1 −1 0 1 −1 −1 1 1 1 1 −1 1 −1 1
21 1 −1 0 1 1 0 0 −1 0 −1 −1 0 −1 0 0 1 1 0 −1 1 0 1 −1 0 1 1 0 0 −1 0
23 1 1 1 1 −1 1 −1 1 1 −1 −1 1 1 −1 −1 1 −1 1 −1 −1 −1 −1 0 1 1 1 1 −1 1 −1
25 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0
27 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0
29 1 −1 −1 1 1 1 1 −1 1 −1 −1 −1 1 −1 −1 1 −1 −1 −1 1 −1 1 1 1 1 −1 −1 1 0 1
31 1 1 −1 1 1 −1 1 1 1 1 −1 −1 −1 1 −1 1 −1 1 1 1 −1 −1 −1 −1 1 −1 −1 1 −1 −1
33 1 1 0 1 −1 0 −1 1 0 −1 0 0 −1 −1 0 1 1 0 −1 −1 0 0 −1 0 1 −1 0 −1 1 0
35 1 −1 1 1 0 −1 0 −1 1 0 1 1 1 0 0 1 1 −1 −1 0 0 −1 −1 −1 0 −1 1 0 1 0
37 1 −1 1 1 −1 −1 1 −1 1 1 1 1 −1 −1 −1 1 −1 −1 −1 −1 1 −1 −1 −1 1 1 1 1 −1 1
39 1 1 0 1 1 0 −1 1 0 1 1 0 0 −1 0 1 −1 0 −1 1 0 1 −1 0 1 0 0 −1 −1 0
41 1 1 −1 1 1 −1 −1 1 1 1 −1 −1 −1 −1 −1 1 −1 1 −1 1 1 −1 1 −1 1 −1 −1 −1 −1 −1
43 1 −1 −1 1 −1 1 −1 −1 1 1 1 −1 1 1 1 1 1 −1 −1 −1 1 −1 1 1 1 −1 −1 −1 −1 −1
45 1 −1 0 1 0 0 −1 −1 0 0 1 0 −1 1 0 1 −1 0 1 0 0 −1 −1 0 0 1 0 −1 1 0
47 1 1 1 1 −1 1 1 1 1 −1 −1 1 −1 1 −1 1 1 1 −1 −1 1 −1 −1 1 1 −1 1 1 −1 −1
49 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1
51 1 −1 0 1 1 0 −1 −1 0 −1 1 0 1 1 0 1 0 0 1 1 0 −1 1 0 1 −1 0 −1 1 0
53 1 −1 −1 1 −1 1 1 −1 1 1 1 −1 1 −1 1 1 1 −1 −1 −1 −1 −1 −1 1 1 −1 −1 1 1 −1
55 1 1 −1 1 0 −1 1 1 1 0 0 −1 1 1 0 1 1 1 −1 0 −1 0 −1 −1 0 1 −1 1 −1 0
57 1 1 0 1 −1 0 1 1 0 −1 −1 0 −1 1 0 1 −1 0 0 −1 0 −1 −1 0 1 −1 0 1 1 0
59 1 −1 1 1 1 −1 1 −1 1 −1 −1 1 −1 −1 1 1 1 −1 1 1 1 1 −1 −1 1 1 1 1 1 −1

性質

以下の事実は、ヤコビ記号の定義とルジャンドル記号の対応する性質からの直接的推論である[2]

ヤコビ記号は上の引数(「分子」)が整数で下の引数(「分母」)が正の奇整数である場合にのみ定義される。

1. n が(奇数の)素数の場合、ヤコビ記号 テンプレート:Bigテンプレート:Sfracテンプレート:Big は対応するルジャンドル記号と等しい(そして同じように書かれる)。
2. テンプレート:Nowrapのとき、(an)=(bn)=(a±mnn)
3. (an)={0if gcd(a,n)1,±1if gcd(a,n)=1.

上または下の引数のいずれかが固定の場合、ヤコビ記号はもう一方の引数において完全乗法的関数になる。 テンプレート:Explain

4. (abn)=(an)(bn),so (a2n)=(an)2=1 or 0.
5. (amn)=(am)(an),so (an2)=(an)2=1 or 0.

平方剰余の法則: mn が奇数で互いに素な正整数である場合、

6. (mn)(nm)=(1)m12n12={1if n1(mod4) or m1(mod4),1if nm3(mod4)

であり、補足として

7. (1n)=(1)n12={1if n1(mod4),1if n3(mod4),
8. (2n)=(1)n218={1if n1,7(mod8),1if n3,5(mod8).

性質4と8を組み合わせると

9. (2an)=(2n)(an)={(an)if n1,7(mod8),(an)if n3,5(mod8).

となる。ルジャンドル記号と同様に、

但し、ルジャンドル記号と異なり、

テンプレート:Bigテンプレート:Sfracテンプレート:Big = 1 である場合、an を法として平方剰余であるかもしれないし、ないかもしれない。

これは、an を法とする平方剰余であるためには、n の全ての素因数を法とする平方剰余でなければならないためである。ただし、例えば an の素因数のちょうど2つを法とする非剰余である場合、ヤコビ記号は1に等しくなる。

ヤコビ記号は、平方と非平方の観点から一律に解釈することはできないが、ゾロタレフの補題(en:Zolotarev's lemma)による順列の符号として一律に解釈することはできる。

ヤコビ記号テンプレート:Bigテンプレート:Sfracテンプレート:Bigは、法nに対するディリクレ指標である。

ヤコビ記号の計算

上記の式は、2つの数のgcdを見つけるためにユークリッドの互除法に似た、ヤコビ記号を計算するための効率的なテンプレート:Nowrap[3] につながる(これは規則2に照らすと驚くべきことはない)。

  1. 規則2を使用して「分母」を法として「分子」を減らす。
  2. 規則9を使用して、偶数の「分子」を抽出する。
  3. 「分子」が1の場合、規則3と4の結果は1になる。「分子」と「分母」が互いに素でない場合、規則3の結果は0になる。
  4. それ以外の場合、「分子」と「分母」は互いに素な奇数の正整数であるため、規則6を使用して記号を反転し、手順1に戻ることができる。

Luaでの実装

function jacobi(n, k)
  assert(k > 0 and k % 2 == 1)
  n = n % k
  t = 1
  while n ~= 0 do
    while n % 2 == 0 do
      n = n / 2
      r = k % 8
      if r == 3 or r == 5 then
        t = -t
      end
    end
    n, k = k, n
    if n % 4 == 3 and k % 4 == 3 then
      t = -t
    end
    n = n % k
  end
  if k == 1 then
    return t
  else
    return 0
  end
end

計算例

ルジャンドル記号テンプレート:Bigテンプレート:Sfracテンプレート:Bigは奇素数 p に対してのみ定義され、ヤコビ記号と同じ規則に従う(つまり、テンプレート:Bigテンプレート:Sfracテンプレート:Bigテンプレート:Bigテンプレート:Sfracテンプレート:Big の相互作用と補足式、および「分子」の乗法性)

問題: 素数9907が与えられたとする。テンプレート:Bigテンプレート:Sfracテンプレート:Bigを計算せよ。

ルジャンドル記号を使用する

(10019907)=(79907)(119907)(139907).(79907)=(99077)=(27)=1.(119907)=(990711)=(711)=(117)=(47)=1.(139907)=(990713)=(113)=1.(10019907)=1.

ヤコビ記号を使用する

(10019907)=(99071001)=(8981001)=(21001)(4491001)=(4491001)=(1001449)=(103449)=(449103)=(37103)=(10337)=(2937)=(3729)=(829)=(229)3=1.

2つの計算の違いは、ルジャンドル記号を使用する場合、記号を反転する前に「分子」を素数冪に因数分解する必要があることである。これにより、整数を因数分解するための既知の多項式時間アルゴリズムがないため、ルジャンドル記号を使用した計算はヤコビ記号を使用した計算よりも大幅に遅くなる[4]。実際、これがヤコビがこの記号を導入した理由である。

素数性判定

ヤコビ記号とルジャンドル記号が異なる別の方法がある。オイラーの規準の式が合成数を法として使用される場合、結果はヤコビ記号の値である場合とそうでない場合があり、実際には−1または1でさえないこともある。

(1945)=1 and 1945121(mod45).(821)=1 but 821121(mod21).(521)=1 but 5211216(mod21).

そのため、数nが素数であるか合成数であるかが不明である場合は、乱数aを選択し、ヤコビ記号テンプレート:Bigテンプレート:Sfracテンプレート:Bigを計算し、オイラーの式と比較する。それらがnを法として異なる場合、nは合成数である。それらがaの多くの異なる値に対してnを法とする同じ剰余を持つ場合、nは「おそらく素数」(擬素数)である。

これは確率論的なソロベイ–シュトラッセン素数判定法と、Baillie-PSW primality testミラー–ラビン素数判定法などの改良の基礎である。

間接的な使用として、リュカ–レーマー素数判定の実行中のエラー検出ルーチンとして使用することができる。これは現代のコンピュータハードウェアにおいても282,589,9331 (既知の最大のメルセンヌ素数)を処理を完了するのに数週間かかる場合がある。In nominal cases, the Jacobi symbol:

(si2Mp)=1i0

これは最終的な剰余 sp2 にも当てはまるため、妥当性の検証として使用できる。ただしハードウェアでエラーが生じた場合、結果が0または1になる可能性が50%あり、これは s の後続の項で変化しない(別のエラーが生じて-1に戻らない限り)。

関連項目

出典

テンプレート:Reflist

レファレンス

外部リンク

  1. テンプレート:Cite journal
  2. Ireland & Rosen pp. 56–57 or Lemmermeyer p. 10
  3. Cohen, pp. 29–31
  4. The number field sieve, the fastest known algorithm, requires
    O(e(lnN)13(lnlnN)23(C+o(1)))
    operations to factor n. See Cohen, p. 495