ヤコビ記号

 投稿者:永野護  投稿日:2010年 4月17日(土)11時41分11秒
  いつも大変お世話になっています。
お忙しい最中、恐縮ですが、また1つ質問させてください。
数論のほうで平方剰余の相互法則というのがあります。
ここでルジャンドル記号とかヤコビ記号がでてくるのですが、
ヤコビ記号の値(1,-1,0)を求めるプログラムは十進BASICで書くと
どのようになるのでしょうか。
急ぎませんのでお暇なときにでもご教示いただければ、助かります。
 

Re: ヤコビ記号

 投稿者:山中和義  投稿日:2010年 4月17日(土)13時37分42秒
  > No.1186[元記事へ]

永野護さんへのお返事です。

> ヤコビ記号の値(1,-1,0)を求めるプログラムは十進BASICで書くとどのようになるのでしょうか。
FUNCTION jacobi(a,b) !ヤコビ記号
   LET j=1
   IF a<0 THEN
      LET a=-a
      IF MOD(b,4)=3 THEN LET j=-j
   END IF
   LET a=MOD(a,b)
   DO WHILE a>1
      DO WHILE MOD(a,2)=0
         LET a=a/2
         IF MOD(b,8)=3 OR MOD(b,8)=5 THEN LET j=-j
      LOOP
      IF a<>1 THEN
         IF MOD(a,4)=3 AND MOD(b,4)=3 THEN LET j=-j
         LET c=b
         LET b=a
         LET a=MOD(c,b)
      END IF
   LOOP
   IF a=0 THEN LET j=0
   LET jacobi=j
END FUNCTION

FOR a=1 TO 3
   FOR b=1 TO 9 STEP 2
      PRINT jacobi(a,b);
   NEXT b
   PRINT
NEXT a

END
 

ヤコビ記号

 投稿者:永野護  投稿日:2010年 4月17日(土)15時24分14秒
  山中様、大変お世話になりました。
丁寧なプログラムに感謝します。
お忙しい中、ありがとうございました。
敬具
 

ヤコビ記号

 投稿者:永野護  投稿日:2010年 4月18日(日)09時14分55秒
  たびたびお邪魔して申し訳ございません。もうひとつ質問させてください。
インターネットなんかを見ると、(a/p)をルジャンドル記号とした場合、
aは奇数pは奇素数であり(n/m)をヤコブ記号とした場合、nは任意の整数
mは奇数と書いてあります。pやmが偶数の場合これらの記号の値は定義されていないのでしょうか。
 

Re: ヤコビ記号

 投稿者:山中和義  投稿日:2010年 4月18日(日)20時51分45秒
  > No.1189[元記事へ]

永野護さんへのお返事です。

> pやmが偶数の場合これらの記号の値は定義されていないのでしょうか。

!クロネッカー記号(Kronecker Symbol)

FUNCTION Kro(a,b)
   IF b=0 THEN
      IF ABS(a)=1 THEN LET Kro=1 ELSE LET Kro=0
      EXIT FUNCTION
   END IF
   IF MOD(a,2)=0 AND MOD(b,2)=0 THEN
      LET Kro=0
      EXIT FUNCTION
   END IF
   LET v=0
   DO WHILE MOD(b,2)=0
      LET v=v+1
      LET b=b/2
   LOOP
   IF MOD(v,2)=0 THEN LET k=1 ELSE LET k=(-1)^((a^2-1)/8)
   IF a<0 AND b<0 THEN LET k=-k
   IF b<0 THEN LET b=-b
   DO WHILE a<>0
      LET v=0
      DO WHILE MOD(a,2)=0
         LET v=v+1
         LET a=a/2
      LOOP
      IF MOD(v,2)=1 THEN LET k=(-1)^((b^2-1)/8)*k
      LET k=(-1)^((a-1)*(b-1)/4)*k
      LET r=ABS(a)
      LET a=MOD(b,r)
      LET b=r
   LOOP
   IF b>1 THEN LET Kro=0 ELSE LET Kro=k
END FUNCTION


SET WINDOW 1,101,1,101
FOR n=1 TO 100
   FOR m=1 TO 100
      SELECT CASE Kro(n,m) !色分け
      CASE 0
         SET AREA COLOR 0
      CASE 1
         SET AREA COLOR 1
      CASE -1
         SET AREA COLOR 4
      CASE ELSE
         PRINT "エラー";m;n
         STOP
      END SELECT
      DRAW DOT WITH SHIFT(n,m) !点を描く
   NEXT m
   PRINT
NEXT n

PICTURE DOT !点
   PLOT AREA: 0,0; 1,0; 1,1; 0,1
END PICTURE

END
 

Re: ヤコビ記号

 投稿者:永野護  投稿日:2010年 4月19日(月)10時43分48秒
  > No.1190[元記事へ]

ありがとうございました。
お忙しいところたびたびすみませんでした。
 

戻る