整式の余り

 投稿者:山中和義  投稿日:2014年 3月11日(火)19時57分30秒
  p(x)÷(x^d-1)、p(x)÷(x^(d-1)+x^(d-2)+ … +x^2+x+1) の場合

考察
(x-1){x^(d-1)+x^(d-2)+ … +x^2+x+1}=x^d-1 であるので、
次のように次数を下げることで余りを求めることができる。
x^n
=(x^d-1)x^(n-d) +x^(n-d)
=(x^d-1)x^(n-d) +(x^d-1)x^(n-2d) +x^(n-2d)
=(x^d-1)x^(n-d) +(x^d-1)x^(n-2d) +(x^d-1)x^(n-3d) +x^(n-3d)
=  :
=(x^d-1){x^(n-d) +x^(n-2d) +x^(n-3d) +x^(n-4d) + … } +x^r  ただし、n=qd+r
≡x^r  mod (x^d-1)
(終り)


x^8+x^7+1
=(x^3-1)(x5+x^2)+x^2  +(x^3-1)(x^4+x)+x  +1
≡x^2+x+1  mod (x^3-1)
≡0  mod (x^2+x+1)


DATA 8 !1+x^7+x^8
DATA 1,0,0,0,0,0,0,1,1
READ aa
DIM A(0 TO aa)
MAT READ A
LET d=3 !x^3-1
DIM B(0 TO d-1)
MAT B=ZER
FOR i=0 TO aa
   IF A(i)<>0 THEN
      LET q=INT(i/d) !i=q*d+r
      LET r=MOD(i,d)
      PRINT A(i); "x^"; STR$(r)
      LET B(r)=B(r)+A(i)
   END IF
NEXT i
MAT PRINT B; !余り B(0)+B(1)x+B(2)x^2+ …
END



同様に、
p(x)÷(x^d+1)、p(x)÷(x^(d-1)-x^(d-2)+ … +x^2-x+1) の場合

x^n
=(x^d+1)x^(n-d) -x^(n-d)
=(x^d+1)x^(n-d) -(x^d+1)x^(n-2d) +x^(n-2d)
=(x^d+1)x^(n-d) -(x^d+1)x^(n-2d) +(x^d+1)x^(n-3d) -x^(n-3d)
=(x^d+1)x^(n-d) -(x^d+1)x^(n-2d) +(x^d+1)x^(n-3d) -(x^d+1)x^(n-4d) +x^(n-4d)
=  :
=(x^d+1){x^(n-d) -x^(n-2d) +x^(n-3d) -x^(n-4d) + … } +(-1)^q x^r  ただし、n=qd+r
      └──────── q個 ───────┘
≡(-1)^q x^r  mod (x^d+1)


x^8+x^4+1
=(x^3+1)(x5-x^2)+x^2  +(x^3+1)x-x  +1
≡x^2-x+1  mod (x^3+1)
≡0  mod (x^2-x+1)


DATA 8 !1+x^4+x^8
DATA 1,0,0,0,1,0,0,0,1
READ aa
DIM A(0 TO aa)
MAT READ A
LET d=3 !x^3+1
DIM B(0 TO d-1)
MAT B=ZER
FOR i=0 TO aa
   IF A(i)<>0 THEN
      LET q=INT(i/d) !i=q*d+r
      LET r=MOD(i,d)
      PRINT A(i)*(-1)^q; "x^"; STR$(r)
      LET B(r)=B(r)+A(i)*(-1)^q
   END IF
NEXT i
MAT PRINT B; !余り B(0)+B(1)x+B(2)x^2+ …
END



問題
整式p(x)=x^11+x^10+x^9+x^8+x^7+x^6+x^5+x^4+x^3+x^2+x+1とする。
p(x^m)÷p(x)の余りを求めよ。

考察
(x-1)p(x)=x^12-1≡0 mod p(x)である。

たとえば、p(x^2)の場合、x^12≡1として、
p(x^2)
=x^22+x^20+x^18+x^16+x^14+x^12+x^10+x^8+x^6+x^4+x^2+1
=x^10+x^8 +x^6 +x^4 +x^2 +1   +x^10+x^8+x^6+x^4+x^2+1
=2(x^10+x^8+x^6+x^4+x^2+1)

また、
 ±0≡0,12 mod 12
 ±1≡1,11 mod 12
 ±2≡2,10 mod 12
 ±3≡3,9 mod 12
 ±4≡4,8 mod 12
 ±5≡5,7 mod 12
 ±6≡6 mod 12
なので、
 p(x^0)=p(x^12)
 p(x^1)=p(x^11)
 p(x^2)=p(x^10)
 p(x^3)=p(x^9)
 p(x^4)=p(x^8)
 p(x^5)=p(x^7)
 p(x^6)
と予想される。
ちなみに、
  p(x^10)
 =x^110+x^100+x^90+x^80+x^70+x^60+x^50+x^40+x^30+x^20+x^10+1
 =x^2  +x^4  +x^6 +x^8 +x^10+1   +x^2 +x^4 +x^6 +x^8 +x^10+1
 ≡2(1+x^2+x^4+x^6+x^8+x^10)
のように、計算してみると予想通りである。
また、12と互いに素、すなわち、1,5,7,11の場合、
 p(x^1)=p(x^5)=p(x^7)=p(x^11)≡0
とわかる。

よって、
 p(x^0)=p(x^12)≡12
 p(x^1)=p(x^5)=p(x^7)=p(x^11)≡0
 p(x^2)=p(x^10)≡2(1+x^2+x^4+x^6+x^8+x^10)
 p(x^3)=p(x^9)≡3(1+x^3+x^6+x^9)
 p(x^4)=p(x^8)≡4(1+x^4+x^8)
 p(x^6)≡6(1+x^6)
(終り)


LET m=2 !p(x^m)
LET k=11 !1+x+x^2+ … +x^k

DIM A(0 TO m*k)
FOR i=0 TO k
   LET A(m*i)=1
NEXT i

LET d=12 !x^12-1

DIM B(0 TO d-1)
MAT B=ZER
FOR i=0 TO m*k
   IF A(i)<>0 THEN
      LET q=INT(i/d) !i=q*d+r
      LET r=MOD(i,d)
      PRINT A(i); "x^"; STR$(r)
      LET B(r)=B(r)+A(i)
   END IF
NEXT i
MAT PRINT B; !余り B(0)+B(1)x+B(2)x^2+ …

END

 

Re: 整式の余り

 投稿者:山中和義  投稿日:2014年 3月12日(水)11時20分37秒
  > No.3338[元記事へ]

> 問題
> 整式p(x)=x^11+x^10+x^9+x^8+x^7+x^6+x^5+x^4+x^3+x^2+x+1とする。
> p(x^m)÷p(x)の余りを求めよ。

実際の計算は、パズル思考で(機械的に)、

被除数 p(x^m) の係数を、
    0  12  24  36  48  60  72  84  96 108 120 132
    1  13  25  37  49  61  73  85  97 109 121 133
    2  14  26  38  50  62  74  86  98 110 122 134
    3  15  27  39  51  63  75  87  99 111 123 135
    4  16  28  40  52  64  76  88 100 112 124 136
    5  17  29  41  53  65  77  89 101 113 125 137
    6  18  30  42  54  66  78  90 102 114 126 138
    7  19  31  43  55  67  79  91 103 115 127 139
    8  20  32  44  56  68  80  92 104 116 128 140
    9  21  33  45  57  69  81  93 105 117 129 141
   10  22  34  46  58  70  82  94 106 118 130 142
   11  23  35  47  59  71  83  95 107 119 131 143
と並べてみる。

p(x^2)÷p(x) の余り
 p(x^2)=x^22+x^20+x^18+x^16+x^14+x^12+x^10+x^8+x^6+x^4+x^2+1 なので、
    0  12  (2)x^0 ※係数2は、x^0とx^12の係数の和である。
    1  13
    2  14  (2)x^2
    3  15
    4  16  (2)x^4
    5  17
    6  18  (2)x^6
    7  19
    8  20  (2)x^8
    9  21
   10  22  (2)x^10
   11  23

p(x^3)÷p(x) の余り
 p(x^3)=x^33+x^30+x^27+x^24+x^21+x^18+x^15+x^12+x^9+x^6+x^3+1 なので、
    0  12  24  (3)x^0
    1  13  25
    2  14  26
    3  15  27  (3)x^3
    4  16  28
    5  17  29
    6  18  30  (3)x^6
    7  19  31
    8  20  32
    9  21  33  (3)x^9
   10  22  34
   11  23  35
など

と求めればよい!?(良い子は決して真似しないでください。。。; )


---------------------------------------

一般に、
(x^d-k) や その因数 で割る場合

次のように変形することで次数を下げることで余りを求めることができる。
x^n
=(x^d-k)x^(n-d) +kx^(n-d)
=(x^d-k)x^(n-d) +k(x^d-k)x^(n-2d) +k^2x^(n-2d)
=(x^d-k)x^(n-d) +k(x^d-k)x^(n-2d) +k^2(x^d-k)x^(n-3d) +k^2x^(n-3d)
=  :
=(x^d-k){x^(n-d) +kx^(n-2d) +k^2x^(n-3d) +k^3x^(n-4d) + … } +k^q x^r  ただし、n=qd+r
     └────────── q個 ─────────┘
≡k^q x^r  mod (x^d-k)
(終り)


x^4-13x^2+36
={(x^2-9)(x^2+9) +81} -13{(x^2-9)+9} +36
≡81-117+36  mod (x^2-9)
≡0

DATA 4 !36-3x^2+x^4
DATA 36,0,-13,0,1
READ aa
DIM A(0 TO aa)
MAT READ A

LET d=2 !x^2-9
LET k=9

DIM B(0 TO d-1)
MAT B=ZER !余り B(0)+B(1)x+B(2)x^2+ …
FOR J=0 TO aa
   IF A(J)<>0 THEN
      LET q=INT(J/d) !i=q*d+r
      LET r=MOD(J,d)
      PRINT k^q*A(J); "x^"; STR$(r)
      LET B(r)=B(r)+k^q*A(J)
   END IF
NEXT J
MAT PRINT B; !結果を表示する

END

 

戻る