Home Reference Source
import BigInteger from 'konpeito/src/math/BigInteger.mjs'
public class | source

BigInteger

多倍長整数演算クラス (immutable)

Static Member Summary

Static Public Members
public static get

1

public static get

10

public static get

2

public static get

0

Static Method Summary

Static Public Methods
public static

BigIntegerを作成する

public static

指定したビット数以内の乱数

public static

probablePrime(bits: BigInteger, random: Random, certainty: BigInteger, create_count: BigInteger): BigInteger

指定したビット数以内の素数

public static

BigInteger を作成

Static Private Methods
private static

BigInteger を作成

private static

_toFloat(number: BigInteger): number

実数を作成

private static

_toInteger(number: BigInteger): number

整数を作成

Constructor Summary

Public Constructor
public

多倍長整数を作成 文字列で指定する場合は指数表記には非対応。 指定した進数で指定する場合は["ff", 16] という配列で指定する。

Member Summary

Public Members
public get

doubleValue: number: *

64ビット実数値 数値が大きいなど、収まりきらない場合に正確な数値にならない場合がある

public get

intValue: number: *

32ビット整数値 数値が大きいなど、収まりきらない場合に正確な数値にならない場合がある

public get

longValue: number: *

64ビット整数値 数値が大きいなど、収まりきらない場合に正確な数値にならない場合がある

Private Members
private

_sign: number

正負(プラスなら+1、マイナスなら-1、0なら0) ※計算によってはここの値の再設定をしていない箇所があるので、ここを見る時は注意

private

element: Array<number>

1要素、16ビット整数の配列

Method Summary

Public Methods
public

絶対値

public

加算

public

論理積

public

否定論理積

public

bitCount(): number

2の補数表現で表した場合に立つビットの数

public

bitLength(): number

2進数で表した場合の長さ

public

特定のビットを下げる

public

ディープコピー

public

compareTo(number: BigInteger): number

値同士を比較

public

compareToAbs(number: BigInteger): number

符号を除いた値同士を比較

public

割り算

public

割り算

public

割り算と余り

public

equals(number: BigInteger): boolean

等式

public

extgcd(number: BigInteger): Array<BigInteger>

拡張ユークリッド互除法

public

階乗関数

public

特定のビットを反転させる

public

ユークリッド互除法

public

getLowestSetBit(): number

2進数で表した場合に最も右側に現れる1の桁数

public

getShort(point: BigInteger): number

16進数ごとの配列で構成される内部値の指定した位置の値

public

isNegative(): boolean

実部の負数を判定

public

isPositive(): boolean

正数を判定

public

isProbablePrime(certainty: BigInteger): boolean

ミラーラビン素数判定法による複素判定

public

isZero(): boolean

0 を判定

public

最大値

public

最小値

public

割り算の正の余り

public

モジュラ逆数

public

冪剰余

public

乗算

public

乗算

public

否定論理積

public

負数

public

次の素数

public

否定論理和

public

ビット反転(ミュータブル)

public

論理和

public

否定論理和

public

pow(exponent: BigInteger): BigInteger

累乗

public

割り算の余り

public

割り算の余り

public

特定のビットを立てる

public

ビットシフト

public

左へビットシフト

public

右へビットシフト

public

sign(): number

符号値

public

signum(): number

符号値

public

減算

public

減算

public

testBit(bit: BigInteger): boolean

指定のビットの判定

public

toString(radix: BigInteger): string

文字列化

public

排他的論理和

Private Methods
private

絶対値(ミュータブル)

private

加算(ミュータブル)

private

論理積(ミュータブル)

private

否定論理積(ミュータブル)

private

割り算(ミュータブル)

private

割り算と余り(ミュータブル)

private

特定のビットを反転させる(ミュータブル)

private

_memory_allocation(bit_length: number)

指定したビット長まで配列を拡張(ミュータブル)

private

内部データの正規化(ミュータブル)

private

割り算の正の余り(ミュータブル)

private

乗算(ミュータブル)

private

否定論理積(ミュータブル)

private

負数(ミュータブル)

private

否定論理和(ミュータブル)

private

ビット反転

private

論理和(ミュータブル)

private

否定論理和(ミュータブル)

private

割り算の余り(ミュータブル)

private

特定のビットを立てる(ミュータブル)

private

_shift(shift_length: BigInteger): BigInteger

ビットシフト(ミュータブル)

private

減算(ミュータブル)

private

排他的論理和(ミュータブル)

private

getTwosComplement(bit_length: number): BigInteger

加算に適用できる数値(負の場合は、2の補数表現)

Static Public Members

public static get ONE: BigInteger: * source

1

Return:

BigInteger

1

public static get TEN: BigInteger: * source

10

Return:

BigInteger

10

public static get TWO: BigInteger: * source

2

Return:

BigInteger

2

public static get ZERO: BigInteger: * source

0

Return:

BigInteger

0

Static Public Methods

public static create(number: BigInteger): BigInteger source

BigIntegerを作成する

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

public static createRandomBigInteger(bitsize: BigInteger, random: Random): BigInteger source

指定したビット数以内の乱数

Params:

NameTypeAttributeDescription
bitsize BigInteger

作成する乱数のビット数

random Random
  • optional

作成に使用するRandom

Return:

BigInteger

public static probablePrime(bits: BigInteger, random: Random, certainty: BigInteger, create_count: BigInteger): BigInteger source

指定したビット数以内の素数

Params:

NameTypeAttributeDescription
bits BigInteger

作成する素数の乱数のビット数

random Random
  • optional

作成に使用するRandom

certainty BigInteger
  • optional
  • default: 100

ミラーラビン素数判定法に使用する繰り返し回数

create_count BigInteger
  • optional
  • default: 500

乱数生成回数

Return:

BigInteger

public static valueOf(number: BigInteger): BigInteger source

BigInteger を作成

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

Static Private Methods

private static _toBigInteger(number: BigInteger): BigInteger source

BigInteger を作成

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

private static _toFloat(number: BigInteger): number source

実数を作成

Params:

NameTypeAttributeDescription
number BigInteger

Return:

number

private static _toInteger(number: BigInteger): number source

整数を作成

Params:

NameTypeAttributeDescription
number BigInteger

Return:

number

Public Constructors

public constructor(number: BigInteger) source

多倍長整数を作成 文字列で指定する場合は指数表記には非対応。 指定した進数で指定する場合は["ff", 16] という配列で指定する。

Params:

NameTypeAttributeDescription
number BigInteger
  • optional

整数値

Public Members

public get doubleValue: number: * source

64ビット実数値 数値が大きいなど、収まりきらない場合に正確な数値にならない場合がある

Return:

number

public get intValue: number: * source

32ビット整数値 数値が大きいなど、収まりきらない場合に正確な数値にならない場合がある

Return:

number

public get longValue: number: * source

64ビット整数値 数値が大きいなど、収まりきらない場合に正確な数値にならない場合がある

Return:

number

Private Members

private _sign: number source

正負(プラスなら+1、マイナスなら-1、0なら0) ※計算によってはここの値の再設定をしていない箇所があるので、ここを見る時は注意

private element: Array<number> source

1要素、16ビット整数の配列

Public Methods

public abs(): BigInteger source

絶対値

Return:

BigInteger

abs(A)

public add(number: BigInteger): BigInteger source

加算

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A + B

public and(number: BigInteger): BigInteger source

論理積

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A & B

public andNot(number: BigInteger): BigInteger source

否定論理積

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A & (!B)

public bitCount(): number source

2の補数表現で表した場合に立つビットの数

Return:

number

public bitLength(): number source

2進数で表した場合の長さ

Return:

number

public clearBit(bit: BigInteger): BigInteger source

特定のビットを下げる

Params:

NameTypeAttributeDescription
bit BigInteger

Return:

BigInteger

public clone(): BigInteger source

ディープコピー

Return:

BigInteger

public compareTo(number: BigInteger): number source

値同士を比較

Params:

NameTypeAttributeDescription
number BigInteger

Return:

number

A > B ? 1 : (A === B ? 0 : -1)

public compareToAbs(number: BigInteger): number source

符号を除いた値同士を比較

Params:

NameTypeAttributeDescription
number BigInteger

Return:

number

abs(A) < abs(B) ? 1 : (abs(A) === abs(B) ? 0 : -1)

public div(number: BigInteger): BigInteger source

割り算

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

floor(A / B)

public divide(number: BigInteger): BigInteger source

割り算

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

floor(A / B)

public divideAndRemainder(number: BigInteger): Array<BigInteger> source

割り算と余り

Params:

NameTypeAttributeDescription
number BigInteger

Return:

Array<BigInteger>

[C = floor(A / B), A - C * B]

public equals(number: BigInteger): boolean source

等式

Params:

NameTypeAttributeDescription
number BigInteger

Return:

boolean

A === B

public extgcd(number: BigInteger): Array<BigInteger> source

拡張ユークリッド互除法

Params:

NameTypeAttributeDescription
number BigInteger

Return:

Array<BigInteger>

ax + by = c = gcd(x, y) となる [a, b, c]

public factorial(): BigInteger source

階乗関数

Return:

BigInteger

n!

public flipBit(bit: BigInteger): BigInteger source

特定のビットを反転させる

Params:

NameTypeAttributeDescription
bit BigInteger

Return:

BigInteger

public gcd(number: BigInteger): BigInteger source

ユークリッド互除法

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

gcd(x, y)

public getLowestSetBit(): number source

2進数で表した場合に最も右側に現れる1の桁数

Return:

number

存在しない場合は -1

public getShort(point: BigInteger): number source

16進数ごとの配列で構成される内部値の指定した位置の値

Params:

NameTypeAttributeDescription
point BigInteger

内部配列の位置

Return:

number

public isNegative(): boolean source

実部の負数を判定

Return:

boolean

real(x) < 0

public isPositive(): boolean source

正数を判定

Return:

boolean

real(x) > 0

public isProbablePrime(certainty: BigInteger): boolean source

ミラーラビン素数判定法による複素判定

Params:

NameTypeAttributeDescription
certainty BigInteger
  • optional
  • default: 100

素数判定法の繰り返し回数

Return:

boolean

public isZero(): boolean source

0 を判定

Return:

boolean

A === 0

public max(number: BigInteger): BigInteger source

最大値

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

max([A, B])

public min(number: BigInteger): BigInteger source

最小値

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

min([A, B])

public mod(number: BigInteger): BigInteger source

割り算の正の余り

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A mod B

public modInverse(m: BigInteger): BigInteger source

モジュラ逆数

Params:

NameTypeAttributeDescription
m BigInteger

Return:

BigInteger

A^(-1) mod m

public modPow(exponent: BigInteger, m: BigInteger): BigInteger source

冪剰余

Params:

NameTypeAttributeDescription
exponent BigInteger
m BigInteger

Return:

BigInteger

A^B mod m

public mul(number: BigInteger): BigInteger source

乗算

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A * B

public multiply(number: BigInteger): BigInteger source

乗算

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A * B

public nand(number: BigInteger): BigInteger source

否定論理積

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A & (!B)

public negate(): BigInteger source

負数

Return:

BigInteger

A

public nextProbablePrime(certainty: BigInteger, search_max: BigInteger): BigInteger source

次の素数

Params:

NameTypeAttributeDescription
certainty BigInteger
  • optional
  • default: 100

素数判定法の繰り返し回数

search_max BigInteger
  • optional
  • default: 100000

次の素数を見つけるまでの回数

Return:

BigInteger

public nor(number: BigInteger): BigInteger source

否定論理和

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

!(A | B)

public not(): BigInteger source

ビット反転(ミュータブル)

Return:

BigInteger

!A

public or(number: BigInteger): BigInteger source

論理和

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A | B

public orNot(number: BigInteger): BigInteger source

否定論理和

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

!(A | B)

public pow(exponent: BigInteger): BigInteger source

累乗

Params:

NameTypeAttributeDescription
exponent BigInteger

Return:

BigInteger

pow(A, B)

public rem(number: BigInteger): BigInteger source

割り算の余り

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A % B

public remainder(number: BigInteger): BigInteger source

割り算の余り

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A % B

public setBit(bit: BigInteger): BigInteger source

特定のビットを立てる

Params:

NameTypeAttributeDescription
bit BigInteger

Return:

BigInteger

public shift(n: BigInteger): BigInteger source

ビットシフト

Params:

NameTypeAttributeDescription
n BigInteger

Return:

BigInteger

A << n

public shiftLeft(n: BigInteger): BigInteger source

左へビットシフト

Params:

NameTypeAttributeDescription
n BigInteger

Return:

BigInteger

A << n

public shiftRight(n: BigInteger): BigInteger source

右へビットシフト

Params:

NameTypeAttributeDescription
n BigInteger

Return:

BigInteger

A >> n

public sign(): number source

符号値

Return:

number

1, -1, 0の場合は0を返す

public signum(): number source

符号値

Return:

number

1, -1, 0の場合は0を返す

public sub(number: BigInteger): BigInteger source

減算

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A - B

public subtract(number: BigInteger): BigInteger source

減算

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A - B

public testBit(bit: BigInteger): boolean source

指定のビットの判定

Params:

NameTypeAttributeDescription
bit BigInteger

Return:

boolean

public toString(radix: BigInteger): string source

文字列化

Params:

NameTypeAttributeDescription
radix BigInteger
  • optional
  • default: 10

文字列変換後の進数

Return:

string

public xor(number: BigInteger): BigInteger source

排他的論理和

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A ^ B

Private Methods

private _abs(): BigInteger source

絶対値(ミュータブル)

Return:

BigInteger

private _add(number: BigInteger): BigInteger source

加算(ミュータブル)

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A += B

private _and(number: BigInteger): BigInteger source

論理積(ミュータブル)

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A &= B

private _andNot(number: BigInteger): BigInteger source

否定論理積(ミュータブル)

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

private _divide(number: BigInteger): BigInteger source

割り算(ミュータブル)

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

floor(A / B)

private _divideAndRemainder(number: BigInteger): Array<BigInteger> source

割り算と余り(ミュータブル)

Params:

NameTypeAttributeDescription
number BigInteger

Return:

Array<BigInteger>

[C = floor(A / B), A - C * B]

private _flipBit(bit: BigInteger): BigInteger source

特定のビットを反転させる(ミュータブル)

Params:

NameTypeAttributeDescription
bit BigInteger

Return:

BigInteger

private _memory_allocation(bit_length: number) source

指定したビット長まで配列を拡張(ミュータブル)

Params:

NameTypeAttributeDescription
bit_length number

ビット数

private _memory_reduction() source

内部データの正規化(ミュータブル)

private _mod(number: BigInteger): BigInteger source

割り算の正の余り(ミュータブル)

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A = A mod B

private _multiply(number: BigInteger): BigInteger source

乗算(ミュータブル)

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A *= B

private _nand(number: BigInteger): BigInteger source

否定論理積(ミュータブル)

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

private _negate(): BigInteger source

負数(ミュータブル)

Return:

BigInteger

A = -A

private _nor(number: BigInteger): BigInteger source

否定論理和(ミュータブル)

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

private _not(): BigInteger source

ビット反転

Return:

BigInteger

private _or(number: BigInteger): BigInteger source

論理和(ミュータブル)

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A |= B

private _orNot(number: BigInteger): BigInteger source

否定論理和(ミュータブル)

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

private _remainder(number: BigInteger): BigInteger source

割り算の余り(ミュータブル)

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A %= B

private _setBit(bit: BigInteger): BigInteger source

特定のビットを立てる(ミュータブル)

Params:

NameTypeAttributeDescription
bit BigInteger

Return:

BigInteger

private _shift(shift_length: BigInteger): BigInteger source

ビットシフト(ミュータブル)

Params:

NameTypeAttributeDescription
shift_length BigInteger

上位へのビットシフト数

Return:

BigInteger

A <<= n

private _subtract(number: BigInteger): BigInteger source

減算(ミュータブル)

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A -= B

private _xor(number: BigInteger): BigInteger source

排他的論理和(ミュータブル)

Params:

NameTypeAttributeDescription
number BigInteger

Return:

BigInteger

A ^= B

private getTwosComplement(bit_length: number): BigInteger source

加算に適用できる数値(負の場合は、2の補数表現)

Params:

NameTypeAttributeDescription
bit_length number
  • optional

ビット長(省略時は自動計算)

Return:

BigInteger