クラスBigInteger
- ã™ã¹ã¦ã®å®Ÿè£…ã•れãŸã‚¤ãƒ³ã‚¿ãƒ•ェース:
Serializable,Comparable<BigInteger>
算術演算ã®ã‚»ãƒžãƒ³ãƒ†ã‚£ãƒƒã‚¯ã‚¹ã¯ã€ã€ŽJava言語仕様ã€ã«å®šç¾©ã•れã¦ã„るよã†ã«Javaã®æ•´æ•°ç®—術演算åã‚’æ£ç¢ºã«æ¨¡å€£ã—ã¾ã™ã€‚ ãŸã¨ãˆã°ã€ã‚¼ãƒé™¤ç®—ã¯ArithmeticExceptionをスãƒãƒ¼ã—ã€æ£ã®æ•°ã«ã‚ˆã‚‹è² ã®æ•°ã®é™¤ç®—ã¯è² (ã¾ãŸã¯0)ã®å‰°ä½™ã‚’出ã—ã¾ã™ã€‚
シフト演算ã®ã‚»ãƒžãƒ³ãƒ†ã‚£ãƒƒã‚¯ã‚¹ã¯ã€è² ã®ã‚·ãƒ•ト移動é‡ã‚’å¯èƒ½ã«ã™ã‚‹ãŸã‚Javaã®ã‚·ãƒ•ト演算åã‚’æ‹¡å¼µã—ã¦ã„ã¾ã™ã€‚ è² ã®ã‚·ãƒ•ト移動é‡ã‚’æŒã¤å³ã‚·ãƒ•トã¯å·¦ã‚·ãƒ•トã¨ãªã‚Šã¾ã™ã€‚逆ã®å ´åˆã‚‚åŒã˜ã§ã™ã€‚ ã“ã®æ“作ã§ã¯ã€ç„¡ç½²åã®å³ã‚·ãƒ•ト演算å(>>>)ã¯çœç•¥ã•れã¦ã„ã¾ã™ãŒã€æ¦‚念的ã«ã¯å›ºå®šã®ä»®æƒ³ç¬¦å·ãƒ“ãƒƒãƒˆã®æ•°ãŒç„¡é™ã®è¡¨ç¾ã§ã¯ãªãã€æ¦‚念的ã«ã¯å›ºå®šã®ã‚µã‚¤ã‚ºã§ã¯ã‚りã¾ã›ã‚“。
ビットå˜ä½ã®è«–ç†æ¼”ç®—ã®ã‚»ãƒžãƒ³ãƒ†ã‚£ãƒƒã‚¯ã‚¹ã¯ã€Javaã®ãƒ“ット整数演算åã®ã‚»ãƒžãƒ³ãƒ†ã‚£ãƒƒã‚¯ã‚¹ã‚’æ£ç¢ºã«æ¨¡å€£ã—ã¦ã„ã¾ã™ã€‚ 2é …æ¼”ç®—å(andã€orã€xor)ã¯ã€æ¼”ç®—å‰ã«2ã¤ã®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®çŸã„æ–¹ã«å¯¾ã—ã¦æš—黙的ã«ç¬¦å·æ‹¡å¼µã‚’行ã„ã¾ã™ã€‚
比較演算ã¯ç¬¦å·ä»˜ãæ•´æ•°ã®æ¯”較を行ã„ã¾ã™ã€‚ã“れã¯ã€Javaã®é–¢é€£ã™ã‚‹æ¼”ç®—åãŠã‚ˆã³åŒç‰ã®æ¼”ç®—åã«ã‚ˆã‚Šè¡Œã‚れるもã®ã¨åŒã˜ã§ã™ã€‚
モジュラ算術演算ã¯ã€å‰°ä½™è¨ˆç®—ã€ã¹ãä¹—ã€ãŠã‚ˆã³ä¹—法逆数計算ã®ãŸã‚ã«æä¾›ã•れã¦ã„ã¾ã™ã€‚ ã“れらã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€å¸¸ã«0ã¨(modulus - 1)ã®é–“ã®è² ã§ãªã„çµæžœã‚’è¿”ã—ã¾ã™ã€‚
ビット演算ã¯ã€ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã®2ã®è£œæ•°è¡¨ç¾ã®ã‚·ãƒ³ã‚°ãƒ«ãƒ»ãƒ“ットã«ä½¿ç”¨ã—ã¾ã™ã€‚ å¿…è¦ã«å¿œã˜ã¦ã€æŒ‡å®šã•れãŸãƒ“ットãŒå«ã¾ã‚Œã‚‹ã‚ˆã†ã«ã‚ªãƒšãƒ©ãƒ³ãƒ‰ãŒæ‹¡å¼µã•れã¾ã™ã€‚ å˜ä¸€ãƒ“ットæ“作ã§ã¯ã€æ“作対象ã®BigIntegerã¨ã¯ç•°ãªã‚‹ç¬¦å·ã‚’使用ã—ã¦BigIntegerを生æˆã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。ã“ã®ã‚¯ãƒ©ã‚¹ã§æä¾›ã•れる任æ„ã®å¤§è¦æ¨¡ãªæŠ½è±¡åŒ–ã«ã‚ˆã£ã¦ã€å„BigIntegerã®å‰ã«ã‚ã‚‹"仮想符å·ãƒ“ット"ãŒç„¡åˆ¶é™ã«å˜åœ¨ã™ã‚‹ã“ã¨ãŒä¿è¨¼ã•れã¾ã™ã€‚
説明をã‚ã‹ã‚Šã‚„ã™ãç°¡æ½”ã«ã™ã‚‹ãŸã‚ã«ã€BigIntegerメソッドã®èª¬æ˜Žã§ã¯å…¨ä½“を通ã—ã¦æ“¬ä¼¼ã‚³ãƒ¼ãƒ‰ã‚’使用ã—ã¾ã™ã€‚ 擬似コードå¼(i+j)ã¯ã€ã€Œå€¤ãŒBigInteger iã®å€¤ã¨BigInteger jã®å€¤ã®å’Œã§ã‚ã‚‹BigIntegerã€ã‚’示ã—ã¾ã™ã€‚ 擬似コードå¼(i == j)ã¯ã€ã€ŒBigInteger iãŒBigInteger jã¨åŒã˜å€¤ã‚’表ã™å ´åˆã«ã ã‘trueã§ã‚ã‚‹ã“ã¨ã€ã‚’示ã—ã¾ã™ã€‚ ã»ã‹ã®æ“¬ä¼¼ã‚³ãƒ¼ãƒ‰å¼ã‚‚åŒã˜ã‚ˆã†ã«è§£é‡ˆã•れã¾ã™ã€‚
ã“ã®ã‚¯ãƒ©ã‚¹ã®ãƒ¡ã‚½ãƒƒãƒ‰ãŠã‚ˆã³ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã¯ã™ã¹ã¦ã€å…¥åŠ›ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ã«å¯¾ã—ã¦nullオブジェクトå‚ç…§ãŒæ¸¡ã•れるã¨NullPointerExceptionをスãƒãƒ¼ã—ã¾ã™ã€‚ BigIntegerã¯ã€-2Integer.MAX_VALUE (ã“れをå«ã¾ãªã„)ã‹ã‚‰+2Integer.MAX_VALUE (ã“れをå«ã¾ãªã„)ã¾ã§ã®ç¯„囲ã®å€¤ã‚’サãƒãƒ¼ãƒˆã™ã‚‹å¿…è¦ãŒã‚りã€ã“ã®ç¯„囲外ã®å€¤ã‚’サãƒãƒ¼ãƒˆã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ BigIntegerコンストラクタã¾ãŸã¯ãƒ¡ã‚½ãƒƒãƒ‰ãŒã‚µãƒãƒ¼ãƒˆã•れã¦ã„る範囲外ã®å€¤ã‚’生æˆã™ã‚‹ã¨ã€ArithmeticExceptionãŒã‚¹ãƒãƒ¼ã•れã¾ã™ã€‚ ç¢ºçŽ‡çš„ç´ æ•°ã®å€¤ã®ç¯„囲ã¯é™ã‚‰ã‚Œã€BigIntegerã§ã‚µãƒãƒ¼ãƒˆã•れるæ£ã®ç¯„囲全体よりå°ã•ã„å ´åˆãŒã‚りã¾ã™ã€‚ 範囲ã¯å°‘ãªãã¨ã‚‚1ã‹ã‚‰2500000000ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。
- APIã®ãƒŽãƒ¼ãƒˆ:
BigInteger値ã¯ä»»æ„ã®ç²¾åº¦æ•´æ•°ã§ã‚ã‚‹ãŸã‚ã€ã“ã®ã‚¯ãƒ©ã‚¹ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã®è¤‡é›‘ã•ã¯å¤‰åŒ–ã—ã€å…¥åŠ›ã®ã‚µã‚¤ã‚ºãŒè¶…ç·šå½¢ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ãŸã¨ãˆã°ã€intValue()ã®ã‚ˆã†ãªãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€inO(1)を実行ã™ã‚‹ã“ã¨ãŒæƒ³å®šã•れã¾ã™ã€‚ã“れã¯ã€ç¾åœ¨ã®å†…部表ç¾ã§ã¯ã€intã¸ã®å¤‰æ›ã‚’実行ã™ã‚‹ãŸã‚ã«ã€BigIntegerã®å›ºå®šã‚µã‚¤ã‚ºã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®ã¿ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ãŸã‚ã€ä¸€å®šã®æ™‚é–“ã§ã™ã€‚ 対照的ã«ã€not()ã®ã‚ˆã†ãªãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€inO(n)時間を実行ã—ã¾ã™ã€‚ã“ã“ã§ã€nã¯BigIntegerã®ã‚µã‚¤ã‚º(ビットå˜ä½)ã§ã™ã€‚ã¤ã¾ã‚Šã€å…¥åŠ›ã®ã‚µã‚¤ã‚ºã«æ¯”例ã—ã¦æ™‚間内ã«å®Ÿè¡Œã•れã¾ã™ã€‚ サイズnã®2ã¤ã®BigInteger値を乗算ã™ã‚‹å ´åˆã€ãƒŠã‚¤ãƒ¼ãƒ–乗算アルゴリズムãŒtimeO(n2)ã§å®Ÿè¡Œã•れã€ç†è«–çµæžœã¯ã€ã“ã®ã‚«ãƒ†ã‚´ãƒªã®è¡¨ç¾ã‚’使用ã™ã‚‹æ•°å€¤ã®ä¹—算アルゴリズムãŒã€Œå°‘ãªãã¨ã‚‚〠O(n log n)ã§å®Ÿè¡Œã•れる必è¦ãŒã‚ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚ ナイブ・ケースã¨ç†è«–的ケースã®å¢ƒç•Œé–“ã®å…±é€šã®ä¹—算アルゴリズムã«ã¯ã€Karatsuba multiplication(O(n1.585)ã¨3ウェイToom-Cook multiplication(O(n1.465)ãŒã‚りã¾ã™ã€‚multiplyã®ç‰¹å®šã®å®Ÿè£…ã¯ã€ç•°ãªã‚‹å…¥åŠ›ã«å¯¾ã—ã¦ç•°ãªã‚‹ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ を自由ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãŸã¨ãˆã°ã€ã‚ˆã‚Šå˜ç´”ãªã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ãŒæ¼¸è¿‘的複雑度ãŒå¤§ãã„å ´åˆã§ã‚‚ã€ã‚ˆã‚Šå˜ç´”ãªå…¥åŠ›ã«å¯¾ã—ã¦ã‚ˆã‚Šå˜ç´”ãªã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ を使用ã—ã¦è£½å“を生æˆã™ã‚‹å®Ÿéš›ã®å®Ÿè¡Œæ™‚é–“ã‚’çŸç¸®ã§ãã¾ã™ã€‚æ“作ã§ã¯ã€ä¸é–“çµæžœã‚’割り当ã¦ã¦ã‚³ãƒ³ãƒ”ュートã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ã“れらã®å‰²å½“ã¦ã¯ã€ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã®å®Ÿè¡Œæ™‚é–“ã«æ¯”例ã—ã¦å¤§ãããªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
実行時間ã¾ãŸã¯æ“ä½œé ˜åŸŸã®å¢ƒç•Œã«é–¢ã™ã‚‹
BigIntegerã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã€é¸æŠžã—ãŸå¤§ãã•ã‚’è¶…ãˆã‚‹BigInteger値をスクリーニングã§ãã¾ã™ã€‚- 実装上ã®ãƒŽãƒ¼ãƒˆ:
- リファレンス実装ã§ã¯ã€çµæžœãŒ -2
Integer.MAX_VALUE(除外)ã‹ã‚‰+2Integer.MAX_VALUE(除外)ã¾ã§ã®ç¯„囲外ã§ã‚ã‚‹å ´åˆã€BigIntegerã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã¨æ“作ã¯ArithmeticExceptionをスãƒãƒ¼ã—ã¾ã™ã€‚ - Java言語仕様をå‚ç…§ã—ã¦ãã ã•ã„:
-
4.2.2 整数演算
- å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
- 1.1
- é–¢é€£é …ç›®:
-
フィールドã®ã‚µãƒžãƒªãƒ¼
フィールド修飾åã¨åž‹ãƒ•ィールド説明static final BigIntegerBigInteger定数1ã§ã™ã€‚static final BigIntegerBigInteger定数10ã§ã™ã€‚static final BigIntegerBigInteger定数2。static final BigIntegerBigInteger定数0ã§ã™ã€‚ -
コンストラクタã®ã‚µãƒžãƒªãƒ¼
コンストラクタコンストラクタ説明BigInteger(byte[] val) BigIntegerã®2ã®è£œæ•°2進表ç¾ã‚’å«ã‚€ãƒã‚¤ãƒˆé…列をBigIntegerã«å¤‰æ›ã—ã¾ã™ã€‚BigInteger(byte[] val, int off, int len) BigIntegerã®2ã¤ã®è£œå®Œãƒã‚¤ãƒŠãƒªè¡¨ç¾ã‚’å«ã‚€ãƒã‚¤ãƒˆãƒ»ã‚µãƒ–é…列をBigIntegerã«å¤‰æ›ã—ã¾ã™ã€‚BigInteger(int signum, byte[] magnitude) BigIntegerã®ç¬¦å·çµ¶å¯¾å€¤è¡¨ç¾ã‚’BigIntegerã«å¤‰æ›ã—ã¾ã™ã€‚BigInteger(int signum, byte[] magnitude, int off, int len) BigIntegerã®ç¬¦å·çµ¶å¯¾å€¤è¡¨ç¾ã‚’BigIntegerã«å¤‰æ›ã—ã¾ã™ã€‚BigInteger(int bitLength, int certainty, Random rnd) ランダムã«ç”Ÿæˆã•れãŸ(ãŠãらãç´ æ•°ã§ã‚ã‚‹)æ£ã®BigIntegerã‚’ã€æŒ‡å®šã—ãŸãƒ“ãƒƒãƒˆé•·ã§æ§‹ç¯‰ã—ã¾ã™ã€‚BigInteger(int numBits, Random rnd) 0 - (2numBits- 1)ã®ç¯„囲ã«ä¸€æ§˜ã«åˆ†æ•£ã•れã¦ã„ã‚‹ã€ãƒ©ãƒ³ãƒ€ãƒ ã«ç”Ÿæˆã•れãŸBigIntegerを構築ã—ã¾ã™ã€‚BigInteger(String val) BigIntegerã®10進String表ç¾ã‚’BigIntegerã«å¤‰æ›ã—ã¾ã™ã€‚BigInteger(String val, int radix) 指定ã•れãŸåŸºæ•°å†…ã®BigIntegerã®String表ç¾ã‚’BigIntegerã«å¤‰æ›ã—ã¾ã™ã€‚ -
メソッドã®ã‚µãƒžãƒªãƒ¼
修飾åã¨åž‹ãƒ¡ã‚½ãƒƒãƒ‰èª¬æ˜Žabs()値ãŒã“ã®BigIntegerã®çµ¶å¯¾å€¤ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚add(BigInteger val) 値ãŒ(this+val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚and(BigInteger val) 値ãŒ(this & val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚andNot(BigInteger val) 値ãŒ(this & ~val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚intbitCount()ã“ã®BigIntegerã®2ã®è£œæ•°è¡¨ç¾å†…ã®ã€ç¬¦å·ãƒ“ットã¨ç•°ãªã‚‹ãƒ“ãƒƒãƒˆã®æ•°ã‚’è¿”ã—ã¾ã™ã€‚intã“ã®BigIntegerã®æœ€å°ã®2ã®è£œæ•°è¡¨ç¾å†…ã®ãƒ“ット数を返ã—ã¾ã™ã€‚ãŸã ã—ã€ç¬¦å·ãƒ“ットを除ãã¾ã™ã€‚byteã“ã®BigIntegerã‚’byteã«å¤‰æ›ã—ã€å¤±ã‚ã‚ŒãŸæƒ…å ±ãŒãªã„ã‹ã©ã†ã‹ã‚’確èªã—ã¾ã™ã€‚clearBit(int n) 値ãŒã“ã®BigIntegerã«ç‰ã—ã„BigIntegerã‚’ã€æŒ‡å®šã•れãŸãƒ“ットをクリアã—ã¦è¿”ã—ã¾ã™ã€‚intcompareTo(BigInteger val) ã“ã®BigIntegerを指定ã•れãŸBigIntegerã¨æ¯”較ã—ã¾ã™ã€‚divide(BigInteger val) 値ãŒ(this /val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚(this /val)ãã—ã¦(this % val)ã¨ç¶šãã€2ã¤ã®BigIntegerã®é…列を返ã—ã¾ã™ã€‚doubleã“ã®BigIntegerã‚’doubleã«å¤‰æ›ã—ã¾ã™ã€‚booleanã“ã®BigIntegerã¨æŒ‡å®šã•れãŸObjectãŒç‰ã—ã„ã‹ã©ã†ã‹ã‚’比較ã—ã¾ã™ã€‚flipBit(int n) 値ãŒã“ã®BigIntegerã«ç‰ã—ã„BigIntegerã‚’ã€æŒ‡å®šã•れãŸãƒ“ットをå転ã•ã›ã¦è¿”ã—ã¾ã™ã€‚floatã“ã®BigIntegerã‚’floatã«å¤‰æ›ã—ã¾ã™ã€‚gcd(BigInteger val) 値ãŒabs(this)ã¨abs(val)ã®æœ€å¤§å…¬ç´„æ•°ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚intã“ã®BigIntegerã®ã‚‚ã£ã¨ã‚‚å³å´(1番低ã„ä½)ã®1ビットã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹(ã‚‚ã£ã¨ã‚‚å³å´ã®1ビットã®å³æ–¹å‘ã®0ãƒ“ãƒƒãƒˆã®æ•°)ã‚’è¿”ã—ã¾ã™ã€‚inthashCode()ã“ã®BigIntegerã®ãƒãƒƒã‚·ãƒ¥ãƒ»ã‚³ãƒ¼ãƒ‰ã‚’è¿”ã—ã¾ã™ã€‚intintValue()ã“ã®BigIntegerã‚’intã«å¤‰æ›ã—ã¾ã™ã€‚intã“ã®BigIntegerã‚’intã«å¤‰æ›ã—ã€å¤±ã‚ã‚ŒãŸæƒ…å ±ãŒãªã„ã‹ã©ã†ã‹ã‚’確èªã—ã¾ã™ã€‚booleanisProbablePrime(int certainty) ã“ã®BigIntegerãŒç´ æ•°ã§ã‚ã‚‹å¯èƒ½æ€§ãŒé«˜ã„å ´åˆã¯trueã€å¿…ãšåˆæˆæ•°ã§ã‚ã‚‹å ´åˆã¯falseã‚’è¿”ã—ã¾ã™ã€‚longã“ã®BigIntegerã‚’longã«å¤‰æ›ã—ã¾ã™ã€‚longã“ã®BigIntegerã‚’longã«å¤‰æ›ã—ã€å¤±ã‚ã‚ŒãŸæƒ…å ±ãŒãªã„ã‹ã©ã†ã‹ã‚’確èªã—ã¾ã™ã€‚max(BigInteger val) ã“ã®BigIntegerã¨valã®æœ€å¤§å€¤ã‚’è¿”ã—ã¾ã™ã€‚min(BigInteger val) ã“ã®BigIntegerã¨valã®æœ€å°å€¤ã‚’è¿”ã—ã¾ã™ã€‚mod(BigInteger m) 値ãŒ(this mod m)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚値ãŒ(this-1mod m)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚modPow(BigInteger exponent, BigInteger m) 値ãŒ(thisexponent mod m)ã®BigIntegerã‚’è¿”ã—ã¾ã™ã€‚multiply(BigInteger val) 値ãŒ(this * val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚negate()値ãŒ(-this)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚ã“ã®BigIntegerより大ãã„æœ€åˆã®æ•´æ•°(ãŠãらãç´ æ•°)ã‚’è¿”ã—ã¾ã™ã€‚not()値ãŒ(~this)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚or(BigInteger val) 値ãŒ(this|val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚値ãŒ(this * val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚pow(int exponent) 値ãŒ(thisexponent)ã®BigIntegerã‚’è¿”ã—ã¾ã™ã€‚static BigIntegerprobablePrime(int bitLength, Random rnd) 指定ã•れãŸãƒ“ãƒƒãƒˆé•·ã§æ£ã®BigInteger (ãŠãらãç´ æ•°)ã‚’è¿”ã—ã¾ã™ã€‚remainder(BigInteger val) 値ãŒ(this % val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚setBit(int n) 値ãŒã“ã®BigIntegerã«ç‰ã—ã„BigIntegerã‚’ã€æŒ‡å®šã•れãŸãƒ“ットをè¨å®šã—ã¦è¿”ã—ã¾ã™ã€‚shiftLeft(int n) 値ãŒ(this << n)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚shiftRight(int n) 値ãŒ(this>> n)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚shortã“ã®BigIntegerã‚’shortã«å¤‰æ›ã—ã¦ã€å¤±ã‚ã‚ŒãŸæƒ…å ±ãŒãªã„ã‹ã©ã†ã‹ã‚’確èªã—ã¾ã™ã€‚intsignum()ã“ã®BigIntegerã®ç¬¦å·è¦ç´ ã‚’è¿”ã—ã¾ã™ã€‚sqrt()ã“ã®BigIntegerã®æ•´æ•°ã®å¹³æ–¹æ ¹ã‚’è¿”ã—ã¾ã™ã€‚thisã®æ•´æ•°å¹³æ–¹æ ¹sã¨ãã®æ®‹ã‚Šthis - s*sã‚’å«ã‚€2ã¤ã®BigIntegersã®é…列をãれãžã‚Œè¿”ã—ã¾ã™ã€‚subtract(BigInteger val) 値ãŒ(this - val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚booleantestBit(int n) 指定ã•れãŸãƒ“ットãŒè¨å®šã•れã¦ã„ã‚‹å ´åˆã«ã ã‘trueã‚’è¿”ã—ã¾ã™ã€‚byte[]ã“ã®BigIntegerã®2ã®è£œæ•°è¡¨ç¾ã‚’å«ã‚€ãƒã‚¤ãƒˆé…列を返ã—ã¾ã™ã€‚toString()ã“ã®BigIntegerã®10進String表ç¾ã‚’è¿”ã—ã¾ã™ã€‚toString(int radix) 指定ã•れãŸåŸºæ•°å†…ã®ã“ã®BigIntegerã®String表ç¾ã‚’è¿”ã—ã¾ã™ã€‚static BigIntegervalueOf(long val) å€¤ãŒæŒ‡å®šã•れãŸlongã®å€¤ã¨ç‰ã—ã„BigIntegerã‚’è¿”ã—ã¾ã™ã€‚xor(BigInteger val) 値ãŒ(this^val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚クラスjava.lang.Numberã§å®£è¨€ã•れãŸãƒ¡ã‚½ãƒƒãƒ‰
byteValue, shortValue
-
フィールド詳細
-
ZERO
-
ONE
-
TWO
-
TEN
-
-
コンストラクタã®è©³ç´°
-
BigInteger
public BigInteger(byte[] val, int off, int len) BigIntegerã®2ã¤ã®è£œå®Œãƒã‚¤ãƒŠãƒªè¡¨ç¾ã‚’å«ã‚€ãƒã‚¤ãƒˆãƒ»ã‚µãƒ–é…列をBigIntegerã«å¤‰æ›ã—ã¾ã™ã€‚ サブé…列ã¯ã€é…列ã¸ã®ã‚ªãƒ•セットã¨é•·ã•ã«ã‚ˆã£ã¦æŒ‡å®šã•れã¾ã™ã€‚ サブアレイã¯big-endianãƒã‚¤ãƒˆãƒ»ã‚ªãƒ¼ãƒ€ãƒ¼ã§ã‚ã‚‹ã¨ä»®å®šã•れる: 最上ä½ãƒã‚¤ãƒˆã¯ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹offã®è¦ç´ ã§ã™ã€‚valé…列ã¯ã€ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãƒ»ã‚³ãƒ¼ãƒ«ä¸ã¯å¤‰æ›´ã•れãªã„ã¨ã¿ãªã•れã¾ã™ã€‚ é…列valã®é•·ã•ãŒã‚¼ãƒã§ãªãã€offãŒè² ã€lenãŒè² ã€ã¾ãŸã¯off+lenãŒvalã®é•·ã•より大ãã„å ´åˆã€IndexOutOfBoundsExceptionãŒã‚¹ãƒãƒ¼ã•れã¾ã™ã€‚- パラメータ:
val- BigIntegerã®ãƒ“ッグ・エンディアン2ã®è£œå®Œãƒã‚¤ãƒŠãƒªè¡¨ç¾ã§ã‚るサブé…列をå«ã‚€ãƒã‚¤ãƒˆé…列。off- ãƒã‚¤ãƒŠãƒªè¡¨ç¾ã®é–‹å§‹ã‚ªãƒ•セット。len- 使用ã™ã‚‹ãƒã‚¤ãƒˆæ•°ã€‚- スãƒãƒ¼:
NumberFormatException-valã®é•·ã•ãŒ0ãƒã‚¤ãƒˆã®å ´åˆã€‚IndexOutOfBoundsException- 指定ã•れãŸé…列ã®ã‚ªãƒ•セットã¨é•·ã•ã«ã‚ˆã£ã¦ã€ãƒã‚¤ãƒˆé…列ã¸ã®ç´¢å¼•ãŒè² ã¾ãŸã¯é…列ã®é•·ã•以上ã«ãªã‚‹å ´åˆã€‚- å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
- 9
-
BigInteger
public BigInteger(byte[] val) BigIntegerã®2ã®è£œæ•°2進表ç¾ã‚’å«ã‚€ãƒã‚¤ãƒˆé…列をBigIntegerã«å¤‰æ›ã—ã¾ã™ã€‚ 入力é…列ã¯ãƒ“ッグ・エンディアンã®ãƒã‚¤ãƒˆé †åº(最上ä½ãƒã‚¤ãƒˆãŒã€Œ0ã€ç•ªç›®ã®è¦ç´ )ã¨è¦‹ãªã•れã¾ã™ã€‚valé…列ã¯ã€ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãƒ»ã‚³ãƒ¼ãƒ«ä¸ã¯å¤‰æ›´ã•れãªã„ã¨ã¿ãªã•れã¾ã™ã€‚- パラメータ:
val- BigIntegerã®ãƒ“ッグ・エンディアン2ã®è£œå®Œãƒã‚¤ãƒŠãƒªè¡¨ç¾ã€‚- スãƒãƒ¼:
NumberFormatException-valã®é•·ã•ãŒ0ãƒã‚¤ãƒˆã®å ´åˆã€‚
-
BigInteger
public BigInteger(int signum, byte[] magnitude, int off, int len) BigIntegerã®ç¬¦å·çµ¶å¯¾å€¤è¡¨ç¾ã‚’BigIntegerã«å¤‰æ›ã—ã¾ã™ã€‚ 符å·ã¯æ•´æ•°ã®ç¬¦å·å€¤(è² ã¯ -1ã€ã‚¼ãƒã¯0ã€æ£ã¯1)ã¨ã—ã¦è¡¨ã•れã¾ã™ã€‚ 大ãã•ã¯ã€big-endianãƒã‚¤ãƒˆãƒ»ã‚ªãƒ¼ãƒ€ãƒ¼ã®ãƒã‚¤ãƒˆé…列ã®ã‚µãƒ–é…列ã§ã™: 最上ä½ãƒã‚¤ãƒˆã¯ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹offã®è¦ç´ ã§ã™ã€‚ é•·ã•lenã®ã‚¼ãƒå€¤ã¯è¨±å¯ã•れã€ã‚·ã‚°ãƒŠãƒ ㌠-1ã€0ã¾ãŸã¯1ã®ã„ãšã‚Œã§ã‚ã£ã¦ã‚‚ã€BigInteger値ã¯0ã«ãªã‚Šã¾ã™ã€‚magnitudeé…列ã¯ã€ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãƒ»ã‚³ãƒ¼ãƒ«ä¸ã¯å¤‰æ›´ã•れãªã„ã¨ã¿ãªã•れã¾ã™ã€‚ é…列magnitudeã®é•·ã•ãŒã‚¼ãƒã§ãªãã€offãŒè² ã€lenãŒè² ã€ã¾ãŸã¯off+lenãŒmagnitudeã®é•·ã•より大ãã„å ´åˆã€IndexOutOfBoundsExceptionãŒã‚¹ãƒãƒ¼ã•れã¾ã™ã€‚- パラメータ:
signum- æ•°å—ã®ç¬¦å·(è² ã¯ -1ã€ã‚¼ãƒã¯0ã€æ£ã¯1)。magnitude- æ•°å—ã®çµ¶å¯¾å€¤ã®ãƒ“ッグエンディアン・ãƒã‚¤ãƒŠãƒªè¡¨ç¾ã€‚off- ãƒã‚¤ãƒŠãƒªè¡¨ç¾ã®é–‹å§‹ã‚ªãƒ•セット。len- 使用ã™ã‚‹ãƒã‚¤ãƒˆæ•°ã€‚- スãƒãƒ¼:
NumberFormatException-signumãŒ3ã¤ã®æœ‰åйãªå€¤(-1ã€0ã€1)ã®ã©ã‚Œã§ã‚‚ãªã„ã‹ã€signumãŒ0ã§ã€magnitudeã«1ã¤ä»¥ä¸Šã®0以外ã®ãƒã‚¤ãƒˆãŒå«ã¾ã‚Œã¦ã„ã‚‹å ´åˆã€‚IndexOutOfBoundsException- 指定ã•れãŸé…列ã®ã‚ªãƒ•セットã¨é•·ã•ã«ã‚ˆã£ã¦ã€ãƒã‚¤ãƒˆé…列ã¸ã®ç´¢å¼•ãŒè² ã¾ãŸã¯é…列ã®é•·ã•以上ã«ãªã‚‹å ´åˆã€‚- å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
- 9
-
BigInteger
public BigInteger(int signum, byte[] magnitude) BigIntegerã®ç¬¦å·çµ¶å¯¾å€¤è¡¨ç¾ã‚’BigIntegerã«å¤‰æ›ã—ã¾ã™ã€‚ 符å·ã¯æ•´æ•°ã®ç¬¦å·å€¤(è² ã¯ -1ã€ã‚¼ãƒã¯0ã€æ£ã¯1)ã¨ã—ã¦è¡¨ã•れã¾ã™ã€‚ 大ãã•ã¯big-endianãƒã‚¤ãƒˆãƒ»ã‚ªãƒ¼ãƒ€ãƒ¼ã®ãƒã‚¤ãƒˆé…列ã§ã™: 最もé‡è¦ãªãƒã‚¤ãƒˆã¯ã‚¼ãƒè¦ç´ ã§ã™ã€‚ é•·ã•ãŒ0ã®çµ¶å¯¾å€¤é…列ã¯è¨±å®¹ã•れã€ç¬¦å·ãŒ -1ã€0ã€ã¾ãŸã¯1ã®ã©ã‚Œã§ã‚ã‚‹ã‹ã«ã‹ã‹ã‚りãªãBigInteger値0ã¨ãªã‚Šã¾ã™ã€‚magnitudeé…列ã¯ã€ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãƒ»ã‚³ãƒ¼ãƒ«ä¸ã¯å¤‰æ›´ã•れãªã„ã¨ã¿ãªã•れã¾ã™ã€‚- パラメータ:
signum- æ•°å—ã®ç¬¦å·(è² ã¯ -1ã€ã‚¼ãƒã¯0ã€æ£ã¯1)。magnitude- æ•°å—ã®çµ¶å¯¾å€¤ã®ãƒ“ッグエンディアン・ãƒã‚¤ãƒŠãƒªè¡¨ç¾ã€‚- スãƒãƒ¼:
NumberFormatException-signumãŒ3ã¤ã®æœ‰åйãªå€¤(-1ã€0ã€1)ã®ã©ã‚Œã§ã‚‚ãªã„ã‹ã€signumãŒ0ã§ã€magnitudeã«1ã¤ä»¥ä¸Šã®0以外ã®ãƒã‚¤ãƒˆãŒå«ã¾ã‚Œã¦ã„ã‚‹å ´åˆã€‚
-
BigInteger
public BigInteger(String val, int radix) 指定ã•れãŸåŸºæ•°å†…ã®BigIntegerã®String表ç¾ã‚’BigIntegerã«å¤‰æ›ã—ã¾ã™ã€‚ String表ç¾ã¯ã€æŒ‡å®šã•れãŸåŸºæ•°å†…ã®ä»»æ„ã®ãƒžã‚¤ãƒŠã‚¹ç¬¦å·ã¾ãŸã¯ãƒ—ラス記å·ã¨ã€ãれã«ç¶šã1ã¤ä»¥ä¸Šã®æ•°å—ã®åˆ—ã§æ§‹æˆã•れã¾ã™ã€‚ æ–‡å—ã‹ã‚‰æ•°å—ã¸ã®ãƒžãƒƒãƒ”ングã¯ã€Character.digitã«ã‚ˆã£ã¦æä¾›ã•れã¾ã™ã€‚ Stringã«ã¯ã€ä¸é©åˆ‡ãªæ–‡å—(空白ãªã©)ã‚’å«ã‚ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。- パラメータ:
val- BigIntegerã®String表ç¾ã€‚radix-valã®è§£é‡ˆã§ä½¿ç”¨ã•れる基数。- スãƒãƒ¼:
NumberFormatException-valãŒã€æŒ‡å®šã—ãŸåŸºæ•°å†…ã®BigIntegerã®æœ‰åйãªè¡¨ç¾ã§ã¯ãªã„ã‹ã€radixãŒCharacter.MIN_RADIXã‹ã‚‰Character.MAX_RADIXã®ç¯„囲外ã«ã‚ã‚‹å ´åˆã€‚
-
BigInteger
public BigInteger(String val) BigIntegerã®10進String表ç¾ã‚’BigIntegerã«å¤‰æ›ã—ã¾ã™ã€‚ æ–‡å—列表ç¾ã¯ã€ã‚ªãƒ—ションã®ãƒžã‚¤ãƒŠã‚¹è¨˜å·ã¾ãŸã¯ãƒ—ラス記å·ã¨ãれã«ç¶šã1æ¡ä»¥ä¸Šã®å°æ•°ã§æ§‹æˆã•れã¾ã™ã€‚ æ–‡å—ã‹ã‚‰æ•°å—ã¸ã®ãƒžãƒƒãƒ”ングã¯ã€Character.digitã«ã‚ˆã£ã¦æä¾›ã•れã¾ã™ã€‚ Stringã«ã¯ã€ä¸é©åˆ‡ãªæ–‡å—(空白ãªã©)ã‚’å«ã‚ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。- パラメータ:
val- BigIntegerã®10進数ã®String表ç¾ã€‚- スãƒãƒ¼:
NumberFormatException-valã¯BigIntegerã®è¡¨ç¾ã¨ã—ã¦ã¯ç„¡åйã§ã‚る。
-
BigInteger
public BigInteger(int numBits, Random rnd) 0 - (2numBits- 1)ã®ç¯„囲ã«ä¸€æ§˜ã«åˆ†æ•£ã•れã¦ã„ã‚‹ã€ãƒ©ãƒ³ãƒ€ãƒ ã«ç”Ÿæˆã•れãŸBigIntegerを構築ã—ã¾ã™ã€‚ 分散ã®ä¸€æ§˜ã•ã¯ã€rndã®ãƒ©ãƒ³ãƒ€ãƒ ・ビットã®ã‚½ãƒ¼ã‚¹ã«èª¤ã‚ŠãŒãªã„ã“ã¨ã‚’剿ã¨ã—ã¾ã™ã€‚ ã“ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã¯ã€å¸¸ã«è² ã§ãªã„BigIntegerを構築ã—ã¾ã™ã€‚- パラメータ:
numBits- æ–°ã—ã„BigIntegerã®æœ€å¤§ãƒ“ット長。rnd- æ–°ã—ã„BigIntegerã®è¨ˆç®—ã§ä½¿ç”¨ã•れるランダム・ビットã®ã‚½ãƒ¼ã‚¹ã€‚- スãƒãƒ¼:
IllegalArgumentException-numBitsãŒè² ã®å ´åˆã€‚- é–¢é€£é …ç›®:
-
BigInteger
public BigInteger(int bitLength, int certainty, Random rnd) ランダムã«ç”Ÿæˆã•れãŸ(ãŠãらãç´ æ•°ã§ã‚ã‚‹)æ£ã®BigIntegerã‚’ã€æŒ‡å®šã—ãŸãƒ“ãƒƒãƒˆé•·ã§æ§‹ç¯‰ã—ã¾ã™ã€‚- APIã®ãƒŽãƒ¼ãƒˆ:
- 確実性を指定ã™ã‚‹å¿…è¦ãŒãªã„å ´åˆã¯ã€ã“ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã§ã¯ãªã
probablePrimeメソッドを使用ã™ã‚‹ã“ã¨ã‚’ãŠè–¦ã‚ã—ã¾ã™ã€‚ - パラメータ:
bitLength- è¿”ã•れるBigIntegerã®ãƒ“ット長。certainty- 呼出ã—å´ãŒè¨±å®¹ã§ãã‚‹ä¸ç¢ºå®Ÿæ€§ã®ç¨‹åº¦ã€‚ æ–°ã—ã„BigIntegerãŒç´ æ•°ã§ã‚る確率ã¯ã€(1 - 1/2certainty)より大ãã„。 ã“ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã®å®Ÿè¡Œæ™‚é–“ã¯ã“ã®ãƒ‘ラメータã®å€¤ã«æ¯”例ã™ã‚‹rnd- ç´ æ•°åº¦ã‚’ãƒ†ã‚¹ãƒˆã™ã‚‹å€™è£œã®é¸æŠžã§ä½¿ç”¨ã•れるランダム・ビットã®ã‚½ãƒ¼ã‚¹ã€‚- スãƒãƒ¼:
ArithmeticException-bitLength < 2ã§ã‚ã‚‹ã‹ã€bitLengthãŒå¤§ãã™ãŽã‚‹å ´åˆã€‚- é–¢é€£é …ç›®:
-
-
メソッドã®è©³ç´°
-
probablePrime
public static BigInteger probablePrime(int bitLength, Random rnd) 指定ã•れãŸãƒ“ãƒƒãƒˆé•·ã§æ£ã®BigInteger (ãŠãらãç´ æ•°)ã‚’è¿”ã—ã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‹ã‚‰è¿”ã•れるBigIntegerãŒåˆæˆæ•°ã§ã‚る確率ã¯2-100ã‚’è¶…ãˆã¾ã›ã‚“。- パラメータ:
bitLength- è¿”ã•れるBigIntegerã®ãƒ“ット長。rnd- ç´ æ•°åº¦ã‚’ãƒ†ã‚¹ãƒˆã™ã‚‹å€™è£œã®é¸æŠžã§ä½¿ç”¨ã•れるランダム・ビットã®ã‚½ãƒ¼ã‚¹ã€‚- 戻り値:
bitLengthビットã®BigInteger (ãŠãらãç´ æ•°)- スãƒãƒ¼:
ArithmeticException-bitLength < 2ã§ã‚ã‚‹ã‹ã€bitLengthãŒå¤§ãã™ãŽã‚‹å ´åˆã€‚- å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
- 1.4
- é–¢é€£é …ç›®:
-
nextProbablePrime
public BigInteger nextProbablePrime()ã“ã®BigIntegerより大ãã„æœ€åˆã®æ•´æ•°(ãŠãらãç´ æ•°)ã‚’è¿”ã—ã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®è¿”ã™æ•°ãŒåˆæˆæ•°ã§ã‚る確率ã¯2-100ã‚’è¶…ãˆã¾ã›ã‚“。 ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯æ¤œç´¢æ™‚ã«ç´ 数をスã‚ップã—ã¾ã›ã‚“。pã‚’è¿”ã™å ´åˆã€this < q < pãŒæˆã‚Šç«‹ã¤ã‚ˆã†ãªç´ æ•°qã¯ã‚りã¾ã›ã‚“。- 実装上ã®ãƒŽãƒ¼ãƒˆ:
- 基礎ã¨ãªã‚‹ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã®æ€§è³ªã«ã‚ˆã‚Šã€
thisã®ã‚µã‚¤ã‚ºã«å¿œã˜ã¦ã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯å¤§é‡ã®ãƒ¡ãƒ¢ãƒªãƒ¼ã‚’消費ã—ãŸã‚Šã€ä½¿ç”¨å¯èƒ½ãªãƒ’ãƒ¼ãƒ—é ˜åŸŸã‚’æœ€å¤§é™ã«æ¶ˆè²»ã—ãŸã‚Šã€é•·æ™‚間実行ã—ãŸã‚Šã§ãã¾ã™ã€‚ - 戻り値:
- ã“ã®
BigIntegerより大ãã„æœ€åˆã®æ•´æ•°(ãŠãらãç´ æ•°)。 - スãƒãƒ¼:
ArithmeticException-this < 0ã§ã‚ã‚‹ã‹ã€thisãŒå¤§ãã™ãŽã‚‹å ´åˆã€‚- å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
- 1.5
-
valueOf
public static BigInteger valueOf(long val) å€¤ãŒæŒ‡å®šã•れãŸlongã®å€¤ã¨ç‰ã—ã„BigIntegerã‚’è¿”ã—ã¾ã™ã€‚- APIã®ãƒŽãƒ¼ãƒˆ:
- ã“ã®é™çš„ファクトリ・メソッドã¯ã€é »ç¹ã«ä½¿ç”¨ã•れるBigIntegersã‚’å†åˆ©ç”¨ã§ãã‚‹ãŸã‚ã€(
long)コンストラクタよりも優先ã—ã¦æä¾›ã•れã¾ã™ã€‚ - パラメータ:
val- è¿”ã•れるBigIntegerã®å€¤ã€‚- 戻り値:
- 指定値を使ã£ãŸBigInteger
-
add
public BigInteger add(BigInteger val) 値ãŒ(this+val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚- パラメータ:
val- ã“ã®BigIntegerã«åŠ ç®—ã™ã‚‹å€¤ã€‚- 戻り値:
this + val
-
subtract
public BigInteger subtract(BigInteger val) 値ãŒ(this - val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚- パラメータ:
val- ã“ã®BigIntegerã‹ã‚‰æ¸›ç®—ã™ã‚‹å€¤ã€‚- 戻り値:
this - val
-
multiply
public BigInteger multiply(BigInteger val) 値ãŒ(this * val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚- 実装上ã®ãƒŽãƒ¼ãƒˆ:
val == thisã®å ´åˆã€å®Ÿè£…ã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ 的パフォーマンスãŒå‘上ã™ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚- パラメータ:
val- ã“ã®BigIntegerã§ä¹—ç®—ã™ã‚‹å€¤ã€‚- 戻り値:
this * val
-
parallelMultiply
public BigInteger parallelMultiply(BigInteger val) 値ãŒ(this * val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚thisã¨valã®ä¸¡æ–¹ãŒå¤§ãã„å ´åˆ(é€šå¸¸ã¯æ•°åƒãƒ“ット)ã€ä¸¦åˆ—ä¹—ç®—ãŒä½¿ç”¨ã•れã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€multiply(java.math.BigInteger)ã¨ã¾ã£ãŸãåŒã˜æ•°å¦çµæžœã‚’è¿”ã—ã¾ã™ã€‚- 実装上ã®ãƒŽãƒ¼ãƒˆ:
- ã“ã®å®Ÿè£…ã§ã¯ã€
val == this.ã¨multiply(java.math.BigInteger)を比較ã™ã‚‹ã¨ã€ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã®ãƒ‘フォーマンスãŒå‘上ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚実装ã®ãƒ‘ラレル乗算アルゴリズムã§ã¯é€šå¸¸ã€çµæžœã‚’より速ãコンピュートã™ã‚‹ãŸã‚ã«ã‚ˆã‚Šå¤šãã®CPUリソースãŒä½¿ç”¨ã•れã€ãƒ¡ãƒ¢ãƒªãƒ¼æ¶ˆè²»ãŒã‚ãšã‹ã«å¢—åŠ ã™ã‚‹å ´åˆãŒã‚りã¾ã™ã€‚ - パラメータ:
val- ã“ã®BigIntegerã§ä¹—ç®—ã™ã‚‹å€¤ã€‚- 戻り値:
this * val- å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
- 19
- é–¢é€£é …ç›®:
-
divide
public BigInteger divide(BigInteger val) 値ãŒ(this /val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚- パラメータ:
val- ã“ã®BigIntegerを除算ã™ã‚‹å€¤ã€‚- 戻り値:
this / val- スãƒãƒ¼:
ArithmeticException-valãŒ0ã®å ´åˆã€‚
-
divideAndRemainder
public BigInteger[] divideAndRemainder(BigInteger val) (this /val)ãã—ã¦(this % val)ã¨ç¶šãã€2ã¤ã®BigIntegerã®é…列を返ã—ã¾ã™ã€‚- パラメータ:
val- ã“ã®BigIntegerを除算ã™ã‚‹å€¤ã€ãŠã‚ˆã³è¨ˆç®—ã•れãŸå‰°ä½™ã€‚- 戻り値:
- 2ã¤ã®BigIntegerã®é…列。商
(this /val)ãŒæœ€åˆã®è¦ç´ ã§ã€å‰°ä½™(this % val)ãŒæœ€å¾Œã®è¦ç´ 。 - スãƒãƒ¼:
ArithmeticException-valãŒ0ã®å ´åˆã€‚
-
remainder
public BigInteger remainder(BigInteger val) 値ãŒ(this % val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚- パラメータ:
val- ã“ã®BigIntegerを除算ã™ã‚‹å€¤ã€ãŠã‚ˆã³è¨ˆç®—ã•れãŸå‰°ä½™ã€‚- 戻り値:
this % val- スãƒãƒ¼:
ArithmeticException-valãŒ0ã®å ´åˆã€‚
-
pow
public BigInteger pow(int exponent) 値ãŒ(thisexponent)ã®BigIntegerã‚’è¿”ã—ã¾ã™ã€‚exponentã¯BigIntegerã§ã¯ãªãæ•´æ•°ã§ã™ã€‚- パラメータ:
exponent- ã“ã®BigIntegerを累乗ã™ã‚‹æŒ‡æ•°ã€‚- 戻り値:
thisexponent- スãƒãƒ¼:
ArithmeticException-exponentãŒè² ã®å ´åˆã€‚ (éžæ•´æ•°å€¤ã‚’生æˆã™ã‚‹æ¼”ç®—ãŒç”Ÿã˜ã‚‹ã€‚)
-
sqrt
public BigInteger sqrt()ã“ã®BigIntegerã®æ•´æ•°ã®å¹³æ–¹æ ¹ã‚’è¿”ã—ã¾ã™ã€‚ 対応ã™ã‚‹æ•°å¦çš„æ•´æ•°nã®æ•´æ•°å¹³æ–¹æ ¹ã¯ã€s*s <= nã®ã‚ˆã†ãªæœ€å¤§ã®æ•°å¦çš„æ•´æ•°sã§ã™ã€‚ ã“れã¯ã€floor(sqrt(n))ã®å€¤ã¨ç‰ã—ããªã‚Šã¾ã™ã€‚ã“ã“ã§ã€sqrt(n)ã¯ã€å®Ÿæ•°ã¨ã—ã¦æ‰±ã‚れるnã®å®Ÿå¹³æ–¹æ ¹ã‚’示ã—ã¾ã™ã€‚ æ•´æ•°å¹³æ–¹æ ¹ã¯ã€å¾Œè€…ãŒæ•´æ•°å€¤ã¨ã—ã¦è¡¨ç¾ã§ããªã„å ´åˆã€å®Ÿå¹³æ–¹æ ¹ã‚ˆã‚Šå°ã•ããªã‚Šã¾ã™ã€‚- 戻り値:
thisã®æ•´æ•°å¹³æ–¹æ ¹- スãƒãƒ¼:
ArithmeticException-thisãŒè² ã®å ´åˆã€‚ (è² ã®æ•´æ•°valã®å¹³æ–¹æ ¹ã¯(i * sqrt(-val))ã§ã‚りã€ã“ã“ã§ã€iã¯ã€Œè™šæ•°å˜ä½ã€ã§ã‚りã€sqrt(-1)ã¨ç‰ã—ã„。)- å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
- 9
-
sqrtAndRemainder
public BigInteger[] sqrtAndRemainder()thisã®æ•´æ•°å¹³æ–¹æ ¹sã¨ãã®æ®‹ã‚Šthis - s*sã‚’å«ã‚€2ã¤ã®BigIntegersã®é…列をãれãžã‚Œè¿”ã—ã¾ã™ã€‚- 戻り値:
- オフセットãŒ0ã®æ•´æ•°å¹³æ–¹æ ¹ã€ã‚ªãƒ•セットãŒ1ã®ä½™ã‚Šã®2ã¤ã®BigIntegerã®é…列
- スãƒãƒ¼:
ArithmeticException-thisãŒè² ã®å ´åˆã€‚ (è² ã®æ•´æ•°valã®å¹³æ–¹æ ¹ã¯(i * sqrt(-val))ã§ã‚りã€ã“ã“ã§ã€iã¯ã€Œè™šæ•°å˜ä½ã€ã§ã‚りã€sqrt(-1)ã¨ç‰ã—ã„。)- å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
- 9
- é–¢é€£é …ç›®:
-
gcd
public BigInteger gcd(BigInteger val) 値ãŒabs(this)ã¨abs(val)ã®æœ€å¤§å…¬ç´„æ•°ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚this == 0 && val == 0ã®å ´åˆã¯0ã‚’è¿”ã—ã¾ã™ã€‚- パラメータ:
val- GCDã®è¨ˆç®—ã«ä½¿ç”¨ã™ã‚‹å€¤ã€‚- 戻り値:
GCD(abs(this), abs(val))
-
abs
public BigInteger abs()値ãŒã“ã®BigIntegerã®çµ¶å¯¾å€¤ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚- 戻り値:
abs(this)
-
negate
-
signum
public int signum()ã“ã®BigIntegerã®ç¬¦å·è¦ç´ ã‚’è¿”ã—ã¾ã™ã€‚- 戻り値:
- ã“ã®BigIntegerãŒè² ã®å ´åˆã¯ -1ã€ã‚¼ãƒã®å ´åˆã¯0ã€æ£ã®å ´åˆã¯1
-
mod
public BigInteger mod(BigInteger m) 値ãŒ(this mod m)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€å¸¸ã«è² ã§ãªã„ BigIntegerã‚’è¿”ã™remainderã¨ã¯ç•°ãªã‚Šã¾ã™ã€‚- パラメータ:
m- モジュラス。- 戻り値:
this mod m- スãƒãƒ¼:
ArithmeticException-m≤ 0- é–¢é€£é …ç›®:
-
modPow
public BigInteger modPow(BigInteger exponent, BigInteger m) 値ãŒ(thisexponent mod m)ã®BigIntegerã‚’è¿”ã—ã¾ã™ã€‚ (powã¨é•ã£ã¦ã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯è² ã®æŒ‡æ•°ã‚’許容ã™ã‚‹ã€‚)- パラメータ:
exponent- 指数m- モジュラス。- 戻り値:
thisexponent mod m- スãƒãƒ¼:
ArithmeticException-m≤0ã§ã‚ã‚‹ã‹ã€æŒ‡æ•°ãŒè² ã§ã“ã®BigIntegerãŒmã®ç´ æ•°ã§ã¯ãªã„å ´åˆã€‚- é–¢é€£é …ç›®:
-
modInverse
public BigInteger modInverse(BigInteger m) 値ãŒ(this-1mod m)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚- パラメータ:
m- モジュラス。- 戻り値:
this-1mod m。- スãƒãƒ¼:
ArithmeticException-m≤0ã§ã‚ã‚‹ã‹ã€ã‚ã‚‹ã„ã¯ã“ã®BigIntegerãŒmod mã®ä¹—法逆数をæŒãŸãªã„å ´åˆ(ã¤ã¾ã‚Šã€ã“ã®BigIntegerãŒmã®ç´ æ•°ã§ã¯ãªã„å ´åˆ)。
-
shiftLeft
public BigInteger shiftLeft(int n) 値ãŒ(this << n)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚ シフト移動é‡nãŒè² ã®å ´åˆã¯ã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯å³ã‚·ãƒ•トを実行ã—ã¾ã™ã€‚ (floor(this * 2n)を計算ã—ã¾ã™ã€‚)- パラメータ:
n- ビットå˜ä½ã§ã®ã‚·ãƒ•ト移動é‡ã€‚- 戻り値:
this << n- é–¢é€£é …ç›®:
-
shiftRight
public BigInteger shiftRight(int n) 値ãŒ(this>> n)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚ ç¬¦å·æ‹¡å¼µãŒè¡Œã‚れã¾ã™ã€‚ シフト移動é‡nãŒè² ã®å ´åˆã¯ã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯å·¦ã‚·ãƒ•トを実行ã—ã¾ã™ã€‚ (floor(this / 2n)を計算ã—ã¾ã™ã€‚)- パラメータ:
n- ビットå˜ä½ã§ã®ã‚·ãƒ•ト移動é‡ã€‚- 戻り値:
this >> n- é–¢é€£é …ç›®:
-
and
public BigInteger and(BigInteger val) 値ãŒ(this & val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚ (ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€thisã¨valã®ä¸¡æ–¹ãŒè² ã®å ´åˆã¯è² ã®BigIntegerã‚’è¿”ã™ã€‚)- パラメータ:
val- ã“ã®BigIntegerã¨ã®è«–ç†ç©ã‚’ã¨ã‚‹å€¤ã€‚- 戻り値:
this & val
-
or
public BigInteger or(BigInteger val) 値ãŒ(this|val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚ (ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€thisã¾ãŸã¯valãŒè² ã®å ´åˆã¯è² ã®BigIntegerã‚’è¿”ã™ã€‚)- パラメータ:
val- ã“ã®BigIntegerã¨ã®è«–ç†å’Œã‚’ã¨ã‚‹å€¤ã€‚- 戻り値:
this | val
-
xor
public BigInteger xor(BigInteger val) 値ãŒ(this^val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚ (ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€thisã¨valã®ç‰‡æ–¹ã ã‘ãŒè² ã®å ´åˆã«è² ã®BigIntegerã‚’è¿”ã™ã€‚)- パラメータ:
val- ã“ã®BigIntegerã¨ã®æŽ’他的論ç†å’Œã‚’ã¨ã‚‹å€¤ã€‚- 戻り値:
this ^ val
-
not
public BigInteger not()値ãŒ(~this)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚ (ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ã“ã®BigIntegerãŒè² ã§ãªã„å ´åˆã«è² ã®å€¤ã‚’è¿”ã™ã€‚)- 戻り値:
~this
-
andNot
public BigInteger andNot(BigInteger val) 値ãŒ(this & ~val)ã§ã‚ã‚‹BigIntegerã‚’è¿”ã—ã¾ã™ã€‚and(val.not())ã¨åŒç‰ã®ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ãƒžã‚¹ã‚ング演算ã®ä¾¿å®œã‚’図るãŸã‚ã«æä¾›ã•れã¦ã„ã¾ã™ã€‚ (ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€thisãŒè² ã§valãŒæ£ã®å ´åˆã«è² ã®BigInteger数値を返ã™ã€‚)- パラメータ:
val- ã“ã®BigIntegerã§è£œæ•°ãŒã¨ã‚‰ã‚Œã€è«–ç†ç©ãŒã¨ã‚‰ã‚Œã‚‹å€¤ã€‚- 戻り値:
this & ~val
-
testBit
public boolean testBit(int n) 指定ã•れãŸãƒ“ットãŒè¨å®šã•れã¦ã„ã‚‹å ´åˆã«ã ã‘trueã‚’è¿”ã—ã¾ã™ã€‚ (((this & (1<<n))!= 0)を計算ã™ã‚‹ã€‚)- パラメータ:
n- テストã™ã‚‹ãƒ“ットã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã€‚- 戻り値:
- 指定ã•れãŸãƒ“ットãŒè¨å®šã•れã¦ã„ã‚‹å ´åˆã«ã ã‘
true。 - スãƒãƒ¼:
ArithmeticException-nãŒè² ã®å ´åˆã€‚
-
setBit
public BigInteger setBit(int n) 値ãŒã“ã®BigIntegerã«ç‰ã—ã„BigIntegerã‚’ã€æŒ‡å®šã•れãŸãƒ“ットをè¨å®šã—ã¦è¿”ã—ã¾ã™ã€‚ ((this|(1<<n))を計算ã™ã‚‹ã€‚)- パラメータ:
n- è¨å®šã™ã‚‹ãƒ“ットã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã€‚- 戻り値:
this | (1<<n)- スãƒãƒ¼:
ArithmeticException-nãŒè² ã®å ´åˆã€‚
-
clearBit
public BigInteger clearBit(int n) 値ãŒã“ã®BigIntegerã«ç‰ã—ã„BigIntegerã‚’ã€æŒ‡å®šã•れãŸãƒ“ットをクリアã—ã¦è¿”ã—ã¾ã™ã€‚ ((this & ~(1<<n))を計算ã™ã‚‹ã€‚)- パラメータ:
n- クリアã™ã‚‹ãƒ“ットã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã€‚- 戻り値:
this & ~(1<<n)- スãƒãƒ¼:
ArithmeticException-nãŒè² ã®å ´åˆã€‚
-
flipBit
public BigInteger flipBit(int n) 値ãŒã“ã®BigIntegerã«ç‰ã—ã„BigIntegerã‚’ã€æŒ‡å®šã•れãŸãƒ“ットをå転ã•ã›ã¦è¿”ã—ã¾ã™ã€‚ ((this^(1<<n))を計算ã™ã‚‹ã€‚)- パラメータ:
n- å転ã™ã‚‹ãƒ“ットã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã€‚- 戻り値:
this ^ (1<<n)- スãƒãƒ¼:
ArithmeticException-nãŒè² ã®å ´åˆã€‚
-
getLowestSetBit
public int getLowestSetBit()ã“ã®BigIntegerã®ã‚‚ã£ã¨ã‚‚å³å´(1番低ã„ä½)ã®1ビットã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹(ã‚‚ã£ã¨ã‚‚å³å´ã®1ビットã®å³æ–¹å‘ã®0ãƒ“ãƒƒãƒˆã®æ•°)ã‚’è¿”ã—ã¾ã™ã€‚ ã“ã®BigIntegerã«1ビットãŒ1ã¤ã‚‚å«ã¾ã‚Œãªã„å ´åˆã¯ -1ã‚’è¿”ã—ã¾ã™ã€‚ ((this == 0? -1 : log2(this & -this))を計算ã™ã‚‹ã€‚)- 戻り値:
- ã“ã®BigIntegerã®ã‚‚ã£ã¨ã‚‚å³å´ã®1ビットã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã€‚
-
bitLength
public int bitLength()ã“ã®BigIntegerã®æœ€å°ã®2ã®è£œæ•°è¡¨ç¾å†…ã®ãƒ“ット数を返ã—ã¾ã™ã€‚ãŸã ã—ã€ç¬¦å·ãƒ“ットを除ãã¾ã™ã€‚ æ£ã®BigIntegerã«ã¤ã„ã¦ã¯ã€é€šå¸¸ã®2進表ç¾ã«ãŠã‘ã‚‹ãƒ“ãƒƒãƒˆã®æ•°ã«ç‰ã—ããªã‚Šã¾ã™ã€‚ ゼãƒã®å ´åˆã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯0ã‚’è¿”ã—ã¾ã™ã€‚ ((ceil(log2(this < 0 ? -this : this+1)))を計算ã™ã‚‹ã€‚)- 戻り値:
- ã“ã®BigIntegerã®æœ€å°ã®2ã®è£œæ•°è¡¨ç¾å†…ã®ãƒ“ット数。ãŸã ã—ã€ç¬¦å·ãƒ“ットを除ãã¾ã™ã€‚
-
bitCount
public int bitCount()ã“ã®BigIntegerã®2ã®è£œæ•°è¡¨ç¾å†…ã®ã€ç¬¦å·ãƒ“ットã¨ç•°ãªã‚‹ãƒ“ãƒƒãƒˆã®æ•°ã‚’è¿”ã—ã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯BigInteger上ã«ãƒ“ット・ベクトル形å¼ã®è¨å®šã‚’実装ã™ã‚‹å ´åˆã«ä¾¿åˆ©ã§ã™ã€‚- 戻り値:
- ã“ã®BigIntegerã®2ã®è£œæ•°è¡¨ç¾å†…ã®ã€ç¬¦å·ãƒ“ットã¨ç•°ãªã‚‹ãƒ“ãƒƒãƒˆã®æ•°ã€‚
-
isProbablePrime
public boolean isProbablePrime(int certainty) ã“ã®BigIntegerãŒç´ æ•°ã§ã‚ã‚‹å¯èƒ½æ€§ãŒé«˜ã„å ´åˆã¯trueã€å¿…ãšåˆæˆæ•°ã§ã‚ã‚‹å ´åˆã¯falseã‚’è¿”ã—ã¾ã™ã€‚certaintyãŒâ‰¤0ã®å ´åˆã€trueãŒè¿”ã•れã¾ã™ã€‚- 実装上ã®ãƒŽãƒ¼ãƒˆ:
- 基礎ã¨ãªã‚‹ãƒ—ãƒ©ã‚¤ãƒžãƒªãƒ†ã‚£ãƒ»ãƒ†ã‚¹ãƒˆãƒ»ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã®æ€§è³ªã€ãŠã‚ˆã³
thisã¨certaintyã®ã‚µã‚¤ã‚ºã«ã‚ˆã£ã¦ã¯ã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯å¤§é‡ã®ãƒ¡ãƒ¢ãƒªãƒ¼ã‚’消費ã—ãŸã‚Šã€ä½¿ç”¨å¯èƒ½ãªãƒ’ãƒ¼ãƒ—é ˜åŸŸã‚’æœ€å¤§é™ã«æ¶ˆè²»ã—ãŸã‚Šã€é•·æ™‚間実行ã—ãŸã‚Šã§ãã¾ã™ã€‚ - パラメータ:
certainty- 呼出ã—å´ãŒè¨±å®¹ã§ãã‚‹ä¸ç¢ºå®Ÿæ€§ã®ç¨‹åº¦ã€‚ã“ã®å‘¼å‡ºã—ãŒtrueã‚’è¿”ã™å ´åˆã€ã“ã®BigIntegerãŒç´ æ•°ã§ã‚る確率ã¯(1 - 1/2certainty)ã‚’è¶…ãˆã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè¡Œæ™‚é–“ã¯ã“ã®ãƒ‘ラメータã®å€¤ã«æ¯”例ã—ã¾ã™ã€‚- 戻り値:
- ã“ã®BigIntegerãŒç´ æ•°ã§ã‚ã‚‹å¯èƒ½æ€§ãŒé«˜ã„å ´åˆã¯
trueã€å¿…ãšåˆæˆæ•°ã§ã‚ã‚‹å ´åˆã¯false。 - スãƒãƒ¼:
ArithmeticException-thisãŒå¤§ãã™ãŽã¾ã™ã€‚
-
compareTo
public int compareTo(BigInteger val) ã“ã®BigIntegerを指定ã•れãŸBigIntegerã¨æ¯”較ã—ã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€6ã¤ã®booleanåž‹ã®æ¯”較演算å(<ã€==ã€>ã€>=ã€!=ã€<=)ã®ãれãžã‚Œã«å¯¾ã™ã‚‹å€‹ã€…ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®ä»£ã‚ã‚Šã«æä¾›ã•れã¾ã™ã€‚ ã“ã‚Œã‚‰ã®æ¯”較を行ã†ã«ã¯(x.compareTo(y)<op>0)ã¨ã„ã†çµ„åˆã›ã‚’ãŠè–¦ã‚ã—ã¾ã™ã€‚ã“ã®å ´åˆã€<op>ã«ã¯6ã¤ã®æ¯”較演算åã®ã†ã¡ã®1ã¤ãŒå…¥ã‚Šã¾ã™ã€‚- 定義:
compareToã€ã‚¤ãƒ³ã‚¿ãƒ•ェースComparable<BigInteger>- パラメータ:
val- ã“ã®BigIntegerã¨æ¯”較ã™ã‚‹BigInteger。- 戻り値:
- ã“ã®BigIntegerã®æ•°å€¤ãŒ
valよりå°ã•ã„å ´åˆã¯ -1ã€ç‰ã—ã„å ´åˆã¯0ã€å¤§ãã„å ´åˆã¯1。
-
equals
public boolean equals(Object x) ã“ã®BigIntegerã¨æŒ‡å®šã•れãŸObjectãŒç‰ã—ã„ã‹ã©ã†ã‹ã‚’比較ã—ã¾ã™ã€‚ -
min
public BigInteger min(BigInteger val) ã“ã®BigIntegerã¨valã®æœ€å°å€¤ã‚’è¿”ã—ã¾ã™ã€‚- パラメータ:
val- 最å°å€¤ã®è¨ˆç®—ã«ä½¿ç”¨ã™ã‚‹å€¤ã€‚- 戻り値:
- ã“ã®BigIntegerã¨
valã®ã†ã¡ã§å°ã•ã„æ–¹ã®å€¤ã‚’æŒã¤BigInteger。 値ãŒç‰ã—ã„å ´åˆã¯ã©ã¡ã‚‰ã‹ãŒè¿”ã•れる。
-
max
public BigInteger max(BigInteger val) ã“ã®BigIntegerã¨valã®æœ€å¤§å€¤ã‚’è¿”ã—ã¾ã™ã€‚- パラメータ:
val- 最大値ã®è¨ˆç®—ã«ä½¿ç”¨ã™ã‚‹å€¤ã€‚- 戻り値:
- ã“ã®BigIntegerã¨
valã®ã†ã¡ã§å¤§ãã„æ–¹ã®å€¤ã‚’æŒã¤BigInteger。 値ãŒç‰ã—ã„å ´åˆã¯ã©ã¡ã‚‰ã‹ãŒè¿”ã•れる。
-
hashCode
-
toString
public String toString(int radix) 指定ã•れãŸåŸºæ•°å†…ã®ã“ã®BigIntegerã®String表ç¾ã‚’è¿”ã—ã¾ã™ã€‚ 基数ãŒCharacter.MIN_RADIXã‹ã‚‰Character.MAX_RADIXã®ç¯„囲外ã«ã‚ã‚‹å ´åˆã€ãƒ‡ãƒ•ォルトã§ã¯10ã«ãªã‚Šã¾ã™(Integer.toStringã®å ´åˆã¨åŒã˜)。Character.forDigitã«ã‚ˆã‚‹æ•°å€¤ã‹ã‚‰æ–‡å—ã¸ã®ãƒžãƒƒãƒ”ングãŒä½¿ç”¨ã•れã€å¿…è¦ã«å¿œã˜ã¦ãƒžã‚¤ãƒŠã‚¹ç¬¦å·ãŒå‰ã«ä»˜ã‘られã¾ã™ã€‚ (ã“ã®è¡¨ç¾ã¯(String, int)コンストラクタã¨äº’æ›æ€§ãŒã‚りã¾ã™)。- パラメータ:
radix- String表ç¾ã®åŸºæ•°ã€‚- 戻り値:
- 指定ã•れãŸåŸºæ•°å†…ã®ã“ã®BigIntegerã®String表ç¾ã€‚
- é–¢é€£é …ç›®:
-
toString
public String toString()ã“ã®BigIntegerã®10進String表ç¾ã‚’è¿”ã—ã¾ã™ã€‚Character.forDigitã«ã‚ˆã‚‹æ•°å€¤ã‹ã‚‰æ–‡å—ã¸ã®ãƒžãƒƒãƒ”ングãŒä½¿ç”¨ã•れã€å¿…è¦ã«å¿œã˜ã¦ãƒžã‚¤ãƒŠã‚¹ç¬¦å·ãŒå‰ã«ä»˜ã‘られã¾ã™ã€‚ (ã“ã®è¡¨ç¾ã¯(String)コンストラクタã¨äº’æ›æ€§ãŒã‚りã€Javaã®+演算åã¨ã®é€£çµã‚’å¯èƒ½ã«ã—ã¾ã™ã€‚) -
toByteArray
public byte[] toByteArray()ã“ã®BigIntegerã®2ã®è£œæ•°è¡¨ç¾ã‚’å«ã‚€ãƒã‚¤ãƒˆé…列を返ã—ã¾ã™ã€‚ ãƒã‚¤ãƒˆé…列ã¯ãƒ“ッグエンディアンã®ãƒã‚¤ãƒˆé †åº(最上ä½ãƒã‚¤ãƒˆãŒã€Œ0ã€ç•ªç›®ã®è¦ç´ )ã§ã™ã€‚ é…列ã«ã¯ã€æœ€ä½Ž1ã¤ã®ç¬¦å·ãƒ“ットをå«ã‚€ã“ã®BigIntegerã®è¡¨ç¾ã«å¿…è¦ãªæœ€å°ã®ãƒã‚¤ãƒˆæ•°((ceil((this.bitLength()+1)/8)))ãŒå«ã¾ã‚Œã¾ã™ (ã“ã®è¡¨ç¾ã¯(byte[])コンストラクタã¨äº’æ›æ€§ãŒã‚りã¾ã™)。- 戻り値:
- ã“ã®BigIntegerã®2ã®è£œæ•°è¡¨ç¾ã‚’å«ã‚€ãƒã‚¤ãƒˆé…列。
- é–¢é€£é …ç›®:
-
intValue
public int intValue()ã“ã®BigIntegerã‚’intã«å¤‰æ›ã—ã¾ã™ã€‚ ã“ã®å¤‰æ›ã¯ã€longã‹ã‚‰intã¸ã®ãƒ—リミティブ変æ›ã‚’ç‹ã‚ã‚‹ã«ä¼¼ã¦ã„ã¾ã™ã€‚Java言語仕様ã§å®šç¾©ã•れã¦ã„ã¾ã™: ã“ã®BigIntegerãŒå¤§ãã™ãŽã¦intã«åŽã¾ã‚‰ãªã„å ´åˆã¯ã€ä¸‹ä½32ビットã®ã¿ãŒè¿”ã•れã¾ã™ã€‚ ã“ã®å¤‰æ›ã«ã‚ˆã‚Šã€ã“ã®BigInteger値ã®çµ¶å¯¾å€¤å…¨ä½“ã«é–¢ã™ã‚‹æƒ…å ±ãŒå¤±ã‚れã€é€†ã®ç¬¦å·ã§è¿”ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚- 定義:
intValueã€ã‚¯ãƒ©ã‚¹Number- 戻り値:
intã«å¤‰æ›ã•れãŸã“ã®BigInteger。- Java言語仕様をå‚ç…§ã—ã¦ãã ã•ã„:
-
5.1.3 プリミティブ・コンãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®è§£èª¬
- é–¢é€£é …ç›®:
-
longValue
public long longValue()ã“ã®BigIntegerã‚’longã«å¤‰æ›ã—ã¾ã™ã€‚ ã“ã®å¤‰æ›ã¯ã€longã‹ã‚‰intã¸ã®ãƒ—リミティブ変æ›ã‚’ç‹ã‚ã‚‹ã«ä¼¼ã¦ã„ã¾ã™ã€‚Java言語仕様ã§å®šç¾©ã•れã¦ã„ã¾ã™: ã“ã®BigIntegerãŒå¤§ãã™ãŽã¦longã«åŽã¾ã‚‰ãªã„å ´åˆã¯ã€ä¸‹ä½64ビットã®ã¿ãŒè¿”ã•れã¾ã™ã€‚ ã“ã®å¤‰æ›ã«ã‚ˆã‚Šã€ã“ã®BigInteger値ã®çµ¶å¯¾å€¤å…¨ä½“ã«é–¢ã™ã‚‹æƒ…å ±ãŒå¤±ã‚れã€é€†ã®ç¬¦å·ã§è¿”ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚- 定義:
longValueã€ã‚¯ãƒ©ã‚¹Number- 戻り値:
longã«å¤‰æ›ã•れãŸã“ã®BigInteger。- Java言語仕様をå‚ç…§ã—ã¦ãã ã•ã„:
-
5.1.3 プリミティブ・コンãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®è§£èª¬
- é–¢é€£é …ç›®:
-
floatValue
public float floatValue()ã“ã®BigIntegerã‚’floatã«å¤‰æ›ã—ã¾ã™ã€‚ ã“ã®å¤‰æ›ã¯ã€Java言語仕様ã§å®šç¾©ã•れã¦ã„ã‚‹doubleã‹ã‚‰floatã¸ã®ãƒ—リミティブ変æ›ã‚’ç‹ã‚ã‚‹ã«ä¼¼ã¦ã„ã¾ã™: ã“ã®BigIntegerãŒå¤§ãã™ãŽã¦floatã¨ã—ã¦è¡¨ç¾ã§ããªã„å ´åˆã¯ã€å¿…è¦ã«å¿œã˜ã¦Float.NEGATIVE_INFINITYã¾ãŸã¯Float.POSITIVE_INFINITYã«å¤‰æ›ã•れã¾ã™ã€‚ æˆ»ã‚Šå€¤ãŒæœ‰é™ã§ã‚ã‚‹å ´åˆã‚‚ã€ã“ã®å¤‰æ›ã«ã‚ˆã‚Šã€BigInteger値ã®ç²¾åº¦ã«é–¢ã™ã‚‹æƒ…å ±ãŒå¤±ã‚れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚- 定義:
floatValueã€ã‚¯ãƒ©ã‚¹Number- 戻り値:
floatã«å¤‰æ›ã•れãŸã“ã®BigInteger。- Java言語仕様をå‚ç…§ã—ã¦ãã ã•ã„:
-
5.1.3 プリミティブ・コンãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®è§£èª¬
-
doubleValue
public double doubleValue()ã“ã®BigIntegerã‚’doubleã«å¤‰æ›ã—ã¾ã™ã€‚ ã“ã®å¤‰æ›ã¯ã€Java言語仕様ã§å®šç¾©ã•れã¦ã„ã‚‹doubleã‹ã‚‰floatã¸ã®ãƒ—リミティブ変æ›ã‚’ç‹ã‚ã‚‹ã«ä¼¼ã¦ã„ã¾ã™: ã“ã®BigIntegerãŒå¤§ãã™ãŽã¦doubleã¨ã—ã¦è¡¨ç¾ã§ããªã„å ´åˆã¯ã€å¿…è¦ã«å¿œã˜ã¦Double.NEGATIVE_INFINITYã¾ãŸã¯Double.POSITIVE_INFINITYã«å¤‰æ›ã•れã¾ã™ã€‚ æˆ»ã‚Šå€¤ãŒæœ‰é™ã§ã‚ã‚‹å ´åˆã‚‚ã€ã“ã®å¤‰æ›ã«ã‚ˆã‚Šã€BigInteger値ã®ç²¾åº¦ã«é–¢ã™ã‚‹æƒ…å ±ãŒå¤±ã‚れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚- 定義:
doubleValueã€ã‚¯ãƒ©ã‚¹Number- 戻り値:
doubleã«å¤‰æ›ã•れãŸã“ã®BigInteger。- Java言語仕様をå‚ç…§ã—ã¦ãã ã•ã„:
-
5.1.3 プリミティブ・コンãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®è§£èª¬
-
longValueExact
public long longValueExact()ã“ã®BigIntegerã‚’longã«å¤‰æ›ã—ã€å¤±ã‚ã‚ŒãŸæƒ…å ±ãŒãªã„ã‹ã©ã†ã‹ã‚’確èªã—ã¾ã™ã€‚ ã“ã®BigIntegerã®å€¤ãŒlongåž‹ã®ç¯„囲ã‹ã‚‰å¤–れã¦ã„ã‚‹å ´åˆã¯ã€ArithmeticExceptionãŒã‚¹ãƒãƒ¼ã•れã¾ã™ã€‚- 戻り値:
longã«å¤‰æ›ã•れãŸã“ã®BigInteger。- スãƒãƒ¼:
ArithmeticException-thisã®å€¤ãŒlongã«ã´ã£ãŸã‚ŠåŽã¾ã‚‰ãªã„å ´åˆã€‚- å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
- 1.8
- é–¢é€£é …ç›®:
-
intValueExact
public int intValueExact()ã“ã®BigIntegerã‚’intã«å¤‰æ›ã—ã€å¤±ã‚ã‚ŒãŸæƒ…å ±ãŒãªã„ã‹ã©ã†ã‹ã‚’確èªã—ã¾ã™ã€‚ ã“ã®BigIntegerã®å€¤ãŒintåž‹ã®ç¯„囲ã‹ã‚‰å¤–れã¦ã„ã‚‹å ´åˆã¯ã€ArithmeticExceptionãŒã‚¹ãƒãƒ¼ã•れã¾ã™ã€‚- 戻り値:
intã«å¤‰æ›ã•れãŸã“ã®BigInteger。- スãƒãƒ¼:
ArithmeticException-thisã®å€¤ãŒintã«æ£ç¢ºã«åŽã¾ã‚‰ãªã„å ´åˆã€‚- å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
- 1.8
- é–¢é€£é …ç›®:
-
shortValueExact
public short shortValueExact()ã“ã®BigIntegerã‚’shortã«å¤‰æ›ã—ã¦ã€å¤±ã‚ã‚ŒãŸæƒ…å ±ãŒãªã„ã‹ã©ã†ã‹ã‚’確èªã—ã¾ã™ã€‚ ã“ã®BigIntegerã®å€¤ãŒshortåž‹ã®ç¯„囲ã‹ã‚‰å¤–れã¦ã„ã‚‹å ´åˆã¯ã€ArithmeticExceptionãŒã‚¹ãƒãƒ¼ã•れã¾ã™ã€‚- 戻り値:
shortã«å¤‰æ›ã•れãŸã“ã®BigInteger。- スãƒãƒ¼:
ArithmeticException-thisã®å€¤ãŒshortã«ã´ã£ãŸã‚ŠåŽã¾ã‚‰ãªã„å ´åˆã€‚- å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
- 1.8
- é–¢é€£é …ç›®:
-
byteValueExact
public byte byteValueExact()ã“ã®BigIntegerã‚’byteã«å¤‰æ›ã—ã€å¤±ã‚ã‚ŒãŸæƒ…å ±ãŒãªã„ã‹ã©ã†ã‹ã‚’確èªã—ã¾ã™ã€‚ ã“ã®BigIntegerã®å€¤ãŒbyteåž‹ã®ç¯„囲ã‹ã‚‰å¤–れã¦ã„ã‚‹å ´åˆã¯ã€ArithmeticExceptionãŒã‚¹ãƒãƒ¼ã•れã¾ã™ã€‚- 戻り値:
byteã«å¤‰æ›ã•れãŸã“ã®BigInteger。- スãƒãƒ¼:
ArithmeticException-thisã®å€¤ãŒbyteã«ã´ã£ãŸã‚ŠåŽã¾ã‚‰ãªã„å ´åˆã€‚- å°Žå…¥ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:
- 1.8
- é–¢é€£é …ç›®:
-