Go to the first, previous, next, last section, table of contents.


剰余型式

剰余型式(modulo form)は、 剰余系(ある数 M の整数倍を取られた)実数です。 剰余算 M は整数論にしばしば登場します。 剰余型式は、`a mod M' のように書かれ、 ここで aM は実数か時分秒型式で、かつ、@c{$0 \le a < M$} 0 <= a < M です。 他のアプリケーションでは、 aM に整数が要求されることが多いですが、 Calc ではその制限はありません。

剰余形式は剰余演算子 `%' と区別されます。 式 `27 % 10' の意味は、27 を 10 で割った余りを計算して 7 を得ることです。 その後の計算では、この 7 を普通の整数として扱います。 式 `27 mod 10' は演算結果として `7 mod 10' を生成します。 この値を使ってさらに計算すると、再び 10 の剰余に縮められるので、 結果は常に所望の範囲におさまります。

同一の M を持つ 2つの剰余型式を足したり掛けたりするとき、 Calc は単に加算や乗算を行ってから、M の剰余に圧縮します。 引数の片方が剰余型式で、もう片方が普通の数の場合は、 普通数の方が互換の剰余型式として扱われます。 また、剰余型式をべき乗のべきに上げることが可能で、 その計算結果も M の剰余に圧縮されます。 (全ての引数が整数型の場合は、 実際にべき乗して剰余圧縮するよりも遙かに効率的な計算が行われます。)

2つの剰余型式 `a mod M' と `b mod M' は、 a, b, M の全てが整数型の場合に割算ができます。 結果は剰余型式で、 `b mod M' を掛けると `a mod M' になるような値です。 解が無い場合(これは M が素数で無い場合にはあり得ます)や、 引数のどちらかが整数型でない場合は、割算はシンボリックなまま残されます。 平方根のような、他の演算は剰余型式にはサポートされていません。 (注意: `(a mod M)^.5' とすれば、 sqrt(a) してから M の剰余に圧縮する感覚で計算されますが、 整数論の観点からは有用な定義とは言えません。)

数値入力中に剰余型式をつくるには、 shift-M キーを押して `mod' 記号を入力します。 特に便利なのは、2回目に shift-M を押すと、 最後に使用した M 値が自動入力されます。 代数的入力中は、手動で `mod' を入力するか あるいは M-m (META-m) を押します。 繰返して、2度目にこれを押すと M 値が入力されます。

剰余型式の修飾のために、v p% が使えます。 Building Vectors 参照 。Basic Arithmetic 参照 。

時分秒型式と剰余型式は混在させることができます。 例えば、時分秒型式の 24剰余系は時刻を扱うのに有用で、 時分秒型式の 360剰余系は角度に適しているでしょう。 M 値も時分秒型式にしておくと、 角度モードがうっかりラジアンに設定されたときに、 時刻 `2@ 0' 0" mod 24' が 「24ラジアン剰余系の2度」などと誤解されてしまうトラブルが防止できます。

剰余型式は変数や式を含むことができません。 もし、`(x + 2) mod 5' を入力したら、 剰余型式は係数ごとに分裂します: `(1 mod 5) x + (2 mod 5)'

代数関数 `makemod(a, m)' は、剰余型式 `a mod m' をつくります。


Go to the first, previous, next, last section, table of contents.     利用度数