Java Malaysia

Java Tutorial => Tutorial Matematik => Topic started by: j33h4d on March 05, 2010, 03:56:12 pm



Title: Menguruskan Nombor Integer Yang Sangat Besar
Post by: j33h4d on March 05, 2010, 03:56:12 pm
Kebiasaannya, jarang kita berurusan dengan nombor-nombor besar. Jika ada pun, nombor tersebut masih boleh di tampung dengan menggunakan datatype long. Namun begitu pada hujung tahun 2008, aku sibuk membuat kajian mengenai Steganography. Pendek cerita, aku menukarkan sebuah imej kepada nombor binari dan ingin membuat sedikit kiraan pada nombor binari tersebut. Bagi imej yang berukuran 100x100; imej tersebut mempunyai 10000 pixel, di mana aku akan mendapat 80000 digit nombor binari. Aku bercadang untuk membuat kiraan pada kesemua nombor tersebut dan di sini lah masalah tersebut timbul.

Datatype long tidak mampu untuk menampung 80000 digit. Selepas membuat sedikit carian melalui Google, aku terjumpa penyelesaian bagi masalah tersebut dengan menggunakan Java API. Rupa-rupanya, dalam java.math.*, korang boleh menyelesaikan masalah tersebut dengan menggunakan BigInteger.

Berikut merupakan contoh bagi mengaplikasi penggunaan java.math.BigInteger:

Kod Sumber

Code:
import java.math.BigInteger;

class NomborBesar{
  public static void main(String[] args){
    BigInteger x = new BigInteger("3333333333333333333333333333333333333333333333333333333333333333333333333333333333");
    BigInteger y = new BigInteger("2222222222222222222222222222222222222222222222222222222222222222222222222222222222");
    
    System.out.println(x.add(y));
    System.out.println(x.subtract(y));
    System.out.println(x.multiply(y));
    System.out.println(x.divide(y));
  }
}

Class BigInteger bukannya terhad kepada kiraan mudah sahaja. Korang juga boleh menggunakannya untuk memeriksa sama ada sesuatu nombor besar itu merupakan nombor perdana ataupun tidak. Selain daripada itu, korang juga boleh membandingkan 2 nombor besar. Untuk maklumat lanjut mengenai penggunaan class BigInteger, korang boleh rujuk webpage ini: http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigInteger.html (http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigInteger.html)