16-2-5.BigInteger

BigInteger Ŭ·¡½º´Â ¹«Áö¸·ÁöÇÏ°Ô Å« Á¤¼ö¸¦ Ç¥ÇöÇÑ´Ù. int³ª long ŸÀÔµµ ½Ç»ýÈ°¿¡ »ç¿ëÇÏ´Â Á¤¼ö ¹üÀ§¸¦ ÃæºÐÈ÷ Ç¥ÇöÇÒ ¼ö ÀÖÁö¸¸ ±×º¸´Ù ´õ Å« ¼ö°¡ ÇÊ¿äÇÒ ¶§´Â BigInteger °´Ã¼¸¦ »ç¿ëÇÑ´Ù. ¿©·¯ °¡Áö »ý¼ºÀÚ°¡ Á¦°øµÇ´Âµ¥ °¡Àå ¸¹ÀÌ »ç¿ëÇÏ´Â »ý¼ºÀÚ Çϳª¸¸ º¸ÀÚ.

 

BigInteger(String val, [int radix])

 

ù ¹ø° Àμö·Î ÀúÀåÇÏ°íÀÚ ÇÏ´Â Á¤¼ö°ªÀ» ´ãÀº ¹®ÀÚ¿­À» Àü´ÞÇÑ´Ù. ¸®ÅÍ·²·Î´Â Å« Á¤¼ö¸¦ Ç¥ÇöÇÒ ¼ö ¾ø¾î ¹®ÀÚ¿­ ÇüÅ·Π±â¼úÇÑ´Ù. µÎ ¹ø° Àμö´Â Áø¹ýÀ» ÁöÁ¤Ç쵂 »ý·«Çϸé 10Áø¼ö·Î Çؼ®ÇÑ´Ù. ¹®ÀÚ¿­ ¾È¿¡´Â Áø¹ý¿¡ ¸Â´Â ¹®ÀÚ¸¸ ÀÖ¾î¾ß ÇÏ¸ç ±×·¸Áö ¾ÊÀ¸¸é ¿¹¿Ü¸¦ ´øÁø´Ù. ¿¹¸¦ µé¾î 10Áø¹ýÀ̶ó¸é 0 ~ 9 »çÀÌÀÇ ¾Æ¶óºñ¾Æ ¼ýÀÚ¸¸ ÀÖ¾î¾ß ÇÏ¸ç ±âÈ£´Â +, - ºÎÈ£¸¸ Çã¶ôµÈ´Ù.

ÀÌ·¸°Ô »ý¼ºµÈ Á¤¼ö °´Ã¼´Â ±âº» ¼öÄ¡Çü ŸÀÔ°ú °ÅÀÇ À¯»çÇÏ°Ô »ç¿ëµÇ¸ç ¼öÄ¡ ¿¬»êÀ» ´ëºÎºÐ Áö¿øÇÑ´Ù. ±×·¯³ª ÀÚ¹ÙÀÇ ¿¬»êÀÚ´Â ±âº»Çü¸¸ Áö¿øÇÏ¸ç °´Ã¼¿¡´Â Á÷Á¢ »ç¿ëÇÒ ¼ö ¾ø¾î ¸Þ¼­µå¸¦ ÅëÇØ ¿¬»êÇÑ´Ù.

 

BigInteger add(BigInteger val)

BigInteger subtract(BigInteger val)

BigInteger multiply(BigInteger val)

BigInteger divide(BigInteger val)

BigInteger remainder(BigInteger val)

 

°¢°¢ +, -, *, /, % ¿¬»êÀÚ¿¡ ÇØ´çÇÏ´Â µ¿ÀÛÀ» ¼öÇàÇÑ´Ù. ¶ÇÇÑ Math Ŭ·¡½º¿¡ Á¤ÀÇµÈ ´ëºÎºÐÀÇ ¼öÇÐ ¿¬»êµµ Áö¿øÇϸç À߸ø »ç¿ëÇßÀ» ¶§ ¿¹¿Ü¸¦ ´øÁö´Â ¹æ½Äµµ ±âº»Çü°ú À¯»çÇÏ´Ù. ´ÙÀ½Àº ¼öÇÐ ¿¬»ê ¸Þ¼­µåÀÇ ÀϺÎÀÌ´Ù.

 

BigInteger abs()

BigInteger pow(int exponent)

BigInteger max(BigInteger val)

BigInteger min(BigInteger val)

 

Àý´ë°ª, °Åµì½Â, ÃÖ´ë, ÃÖ¼Ò°ªÀ» ±¸ÇÏ´Â ¸Þ¼­µåÀÌ´Ù. ¿¬»êÀÚ¸¦ »ç¿ëÇÑ Á÷°üÀûÀÎ ±¸¹®À» ¾µ ¼ö ¾ø°í ¸ðµç ¿¬»êÀ» ÀÚü ¸Þ¼­µå·Î ó¸®ÇÑ´Ù´Â ¸é¿¡¼­ ±âº»Çüº¸´Ù ºÒÆíÇÏ´Ù. ´ÙÀ½ ¿¹Á¦´Â BigIntegerÀÇ °£´ÜÇÑ »ç¿ë¿¹ÀÌ´Ù.

 

biginteger

import java.math.*;

 

class JavaTest {

      public static void main(String[] args) {

             BigInteger a = new BigInteger("123456789098765432101234567890");

             System.out.println(a);

            

             BigInteger b = new BigInteger("111111111111111111111111111111");

             BigInteger c = a.add(b);

             System.out.println(c);

      }

}

½ÇÇà°á°ú

123456789098765432101234567890

234567900209876543212345679001

 

10ÀÇ 29½Â¿¡ ÇØ´çÇÏ´Â ¾öû³ª°Ô Å« Á¤¼ö¸¦ »ý¼ºÇÑ ÈÄ Á¦´ë·Î ´ëÀԵǾú´ÂÁö Ãâ·ÂÇß´Ù. ±æ´Ù¶õ ¼ýÀÚ¿©¼­ °¨ÀÌ Àß ¾È¿À°ÚÁö¸¸ ¸»·Î Ç¥ÇöÇÏÀÚ¸é 10¾ïÇØÀ̸ç ÇÑ ´ÜÀ§·Î´Â 10¾çÀ̶ó°í ÇÑ´Ù. ´ëºÎºÐÀÇ »ç¶÷Àº µé¾îº» Àûµµ ¾øÀ»ÅÙµ¥ µ¿¾çÀÇ ¼ýÀÚ´Â 10ÀÇ 4½Â ´ÜÀ§·Î ¸¸¾ïÁ¶°æÇØÀھ籸°£Á¤Àç±Ø µîÀ¸·Î À̸§À» ºÙÀ̸ç 10ÀÇ 64½ÂÀ» ºÒ°¡»çÀÇ, 10ÀÇ 68½ÂÀ» ¹«·®´ë¼ö¶ó°í ºÎ¸¥´Ù.

µ¿¾çÀÇ ¼ö ü°è´Â ¹«·®´ë¼ö°¡ ³¡ÀÌ¸ç ºÒ±³¿¡¼­ 1°ÌÀ» 10ÀÇ 72½ÂÀ¸·Î Á¤ÀÇÇϴµ¥ ¹«ÇÑ´ë¿Í µ¿±ÞÀÌ´Ù. ¼­¾ç¿¡¼­´Â 10ÀÇ 100½ÂÀ» ±¸°ñÀ̶ó°í Çϴµ¥ ¹«Áö¸·ÁöÇÏ°Ô Å« ¼ö¶ó´Â »ó¡ÀûÀÎ ÀǹÌÀÌ´Ù. BigInteger´Â »ç¶÷ÀÌ À̸§À» ºÙ¿© ³õÀº ¼öº¸´Ù ´õ Å« ¼ö±îÁö Ç¥ÇöÇÒ ¼ö ÀÖ´Ù. »ý¼ºÀÚ·Î ¼ýÀÚ¸¦ ´ãÀº ¹®ÀÚ¿­À» Àü´ÞÇߴµ¥ ¿Ö³ÄÇÏ¸é ´ÙÀ½°ú °°ÀÌ Ç¥±âÇÒ ¼ö ¾ø±â ¶§¹®ÀÌ´Ù.

 

new BigInteger(123456789098765432101234567890)

 

ÀÚ¹Ù ¾ð¾î¿¡¼­ ÃÖ´ë ±æÀÌÀÇ ¸®ÅÍ·²ÀÌ long ŸÀÔÀ̸ç 64ºñÆ® ÀÌ»óÀÇ ¼öÄ¡ ¸®ÅÍ·²À» ÀνÄÇÏÁö ¸øÇØ ¾î¿ ¼ö ¾øÀÌ ¼ýÀÚ¿­À» µû¿ÈÇ¥¾È¿¡ °¨½Î Ç¥ÇöÇÑ´Ù. °°Àº Å©±â·Î ¸ðµç ÀÚ¸®¼ö°¡ 1ÀÎ b °´Ã¼¸¦ ¸¸µé°í a¿Í ´õÇÑ ÈÄ c¿¡ ´ëÀÔÇØ º¸¾Ò´Ù. aÀÇ °¢ ÀÚ¸®¼ö°¡ ¸ðµÎ 1¾¿ Áõ°¡ÇÑ´Ù. BigInteger °´Ã¼³¢¸® ´õÇÒ ¶§ add ¸Þ¼­µå¸¦ È£ÃâÇߴµ¥ ¼öÄ¡¶ó°í Çؼ­ ´ÙÀ½°ú °°ÀÌ ¿¬»êÇÒ ¼ö´Â ¾ø´Ù.

 

BigInteger c = a + b;

 

+ ¿¬»êÀÚ´Â ±âº»Çü¸¸ ÀνÄÇÒ »Ó °´Ã¼´Â Áö¿øÇÏÁö ¾ÊÀ¸¸ç Àڹٴ ŸÀÔ¿¡ µû¶ó ¿¬»êÀÚÀÇ ±â´ÉÀ» Á¤ÀÇÇÏ´Â ¿¬»êÀÚ ¿À¹ö·Îµù ±â´Éµµ ¾ø´Ù. ±×·¡¼­ add¶ó´Â º°µµÀÇ ¸Þ¼­µå°¡ Á¦°øµÇ¸ç ³ª¸ÓÁö ±âº» ¿¬»êµµ ¸ðµÎ ¸Þ¼­µå·Î ¼öÇàÇÑ´Ù. °´Ã¼ÀÌ´Ù º¸´Ï »ý¼ºÀ̳ª ¿¬»ê½ÄÀÇ Ç¥Çö ¹æ¹ýÀÌ Á» ´Ù¸¦ »Ó ¿¬»êÀÇ ³í¸®ÀûÀÎ µ¿ÀÛÀº ±âº»Çü°ú µ¿ÀÏÇÏ´Ù.

BigInteger°¡ Ç¥ÇöÇÒ ¼ö ÀÖ´Â °ªÀÇ ¹üÀ§´Â 2ÀÇ 20¾ï½ÂÀε¥ ¼öÀÇ Å©±â·Î´Â °¨È÷ »ó»óµµ ÇÒ ¼ö ¾ø´Â Áö°æÀÌ´Ù. ¸Þ¸ð¸®¾çÀ¸·Î Ç¥ÇöÇϸé 250M ¹ÙÀÌÆ®ÀÇ ±æÀÌ¿¡ ÇØ´çÇÏ´Ï 8¹ÙÀÌÆ®ÀÇ long ŸÀÔ µûÀ§´Â °¨È÷ ºñ±³ ´ë»óÁ¶Â÷ µÇÁö ¸øÇÑ´Ù.

ÀÌ·¸°Ô ¹«Áö¸·ÁöÇÏ°Ô Å« ¼ö´Â µµ´ëü ¾ðÁ¦ »ç¿ëÇÒ±î? »ç½Ç long ŸÀÔÀÇ ÃÖ´ë°ªÀÎ 900°æµµ ½Ç»ýÈ°¿¡¼­ °ÅÀÇ »ç¿ëÇÏÁö ¾Ê´Â ¼ýÀÚ´Ù. õ¹®ÇÐÀ̳ª Åë°èÇÐ Á¤µµµÇ¸é ÀÌÁ¤µµ Å« ¼ö°¡ ÇÊ¿äÇÏ°ÚÁö¸¸ doubleÇüÀ̸é ÃæºÐÇÏ´Ù. ±×º¸´Ù ´õ Å« ¼ö´Â ÆÐÅÏ ºÐ¼®À̳ª ¾Ïȣȭ¿¡ »ç¿ëµÈ´Ù. Å°°¡ 256ºñÆ® Á¤µµ µÇ¸é ¼ö°¡ ¾öû³ª°Ô Ä¿Áö±â ¶§¹®¿¡ ±âº» ŸÀÔÀ¸·Î´Â Ç¥Çö ¹× ¿¬»êÀÌ ºÒ°¡´ÉÇÏ´Ù.