【数式処理 MuPAD 入門】
平田 浩一 / 1999年11月08日 
hirata@ed.ehime-u.ac.jp 
愛媛大学教育学部数学教室 


数の計算 (1)





整数
MuPADではメモリが許す限りの大きな整数の計算ができます。

■ 四則演算

四則演算としては

x y     加法
x y 減法
x y 乗法

除法については、商と余りを求めるものと分数計算する演算子があります。

x div y   
x mod y 剰余
x y 分数計算

また、べき乗は

x n

で計算できます。

● 7+13-5*2;
                                    10
● 20 div 6;
                                     3
● 20 mod 6;
                                     2
● 20/6;
                                   10/3
● 20^6;
                                 64000000

■ 最大公約数、階乗

整数計算でよく用いられる関数として

igcd(m,n,...)     最大公約数
ilcm(m,n,...) 最小公倍数
fact(n) 階乗 n!
binomial(n,r) 二項係数 nCr

が用意されています。

● igcd(36,15,9);
                                     3
● ilcm(36,15,9);
                                    180
● binomial(7,4);
                                    35
● fact(10);
                                  3628800

■ 素数

整数の計算では素数を取り扱うとが多いので、 そのための関数が用意されています。

isprime(n) 素数かどうかの判定
ifactor(n) 素因数分解
ithprime(i) i 番目の素数
nextprime(n)    n 以上の最小の素数
● isprime(10001);
                                   FALSE
● ifactor(10001);
                            [1, 73, 1, 137, 1]
● ithprime(100);
                                    541
● nextprime(542);
                                    547

ifactor の計算結果の意味について少し説明します。 120 の素因数分解をしてみます。

● ifactor(120);
                           [1, 2, 3, 3, 1, 5, 1]

これは、120 = 1 * 23 * 31 * 51 を意味しています。 詳細については、オンラインマニュアルを参照ください。



有理数

有理数の計算も、メモリが許す限りの大きな分母と分子を扱うことができます。 計算結果は約分されます。

● (1/2+1/3-1/4)^10;
                           282475249/61917364224

■ 分母、分子

有理数の分母・分子を取り出す関数があります。

numer(r)     有理数 r の分子
denom(r) 有理数 r の分母
● numer((1/2+1/3-1/4)^10);
                                 282475249
● denom((1/2+1/3-1/4)^10);
                                61917364224


値の記録

コンピュータは記憶力抜群なのですが、忘却の方も天才的です。 計算結果を記憶しておくように指示しないとどんどん忘れて行きます。

値を記録するには、名前をつけて(変数といいます)、 代入演算子「:=」でその変数に代入します。

変数に代入した値は、その変数名で参照したり、計算に利用することができます。

● v1:=(1/2+1/3-1/4)^10;
                           282475249/61917364224
● v1;
                           282475249/61917364224
● v2:=numer(v1);
                                 282475249
● v3:=denom(v1);
                                61917364224
● v2; v3;
                                 282475249
                                61917364224

MuPAD では、代入に「:=」を用います。等号記号「=」は別の意味になりますので 間違わないよう注意してください。

値が代入された変数に別の値を代入することができます。 その変数には新しい値が入り、古い値は忘れ去られます。

● v1;
                           282475249/61917364224
● v1:=(2/5)^10;
                               1024/9765625
● v1;
                               1024/9765625

変数に代入された値を消去し、何も代入されていない白紙の状態に戻したいときは、 NIL を代入します。

● v1;
                               1024/9765625
● v1:=NIL;
                                    NIL
● v1;
                                    v1

【演習問題】

(1) 101*102*103*…*148*149*150 を求めよ。

(2) n=10, 30, 50 に対して、n(n-1) を n-1 で割った余りを求めよ。
  また、他の整数 n ではどうなるか、予想を立てよ。

(3) 100000 より大きい素数の中で最小のものを求めよ。

(4) 100000 より小さい素数の中で最大のものを求めよ。

(5) 次の整数が素数であるかどうか判定せよ。素数でないものについては、その素因数分解を求めよ。

  (a) 2101 - 1   (b) 2103 - 1   (c) 2107 - 1


【数式処理 MuPAD 入門】