mathn.rb

[2001/02/20] るびきち[外部] *1

rational.rbcomplex.rbを補助する関数群。

本来 Floatととは異なり, Ratinalは誤差がないので,

1/2 -> 1/2 (Rational)
2 * Rational(1,2) -> 1 (Fixnum)

となってほしいこともあるかと思います. つまり, rubyのBignumとFixnumの様 な関係ですね. rubyではこれらの型変換は勝手に行なっています.

mathn.rbをインクルードするとこの様な動作を行ないます. つまり, Ratinal とComplexをBignumとFixnumと同等な関係にします.

Integer

クラスメソッド:

Integer.from_prime_division(pd)

素因数分解の配列pdから数を求める。 pd[素因数, 指数]組の配列である。

例:
Integer.from_prime_division [[2,3],[3,2]]
-> 72 # == 2**3 * 3**2

メソッド:

Integer#gcd2(int)

selfintの最大公約数を求める。

例:
12.gcd2 8
-> 4
Integer#prime_division

selfの素因数分解(の配列)を求める。

例:
72.prime_division
-> [[2, 3], [3, 2]]

Prime

インクルードしているモジュール:

クラスメソッド:

Prime.new

素数を生成するクラスを作る。

メソッド:

Prime#succ

次の素数を返す。

例:
pp = Prime.new
pp.succ # => 2
pp.succ # => 3
pp.succ # => 5
Prime#each

素数について繰り返し。 これは無限ループになるので必ずbreakを入れること。

例:
> pp=Prime.new; i = 0; pp.each  {|x| break if i > 5; puts x; i+=1;}
2
3
5
7
11
13

Fixnum

Bignum

Rational

Rational#**

べき乗。 RationalになるようであればRationalで返す。

Rational#power2

作りかけ(^^;;

Math

Math.sqrt(a)
Math.rsqrt(a)

*2


*1参考:ruby-list:1174[外部]
*2後に解析