THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 90

int

y = box.y + box.height/2;

return new

Point(x, y);

}

public static void

main(String[] args) {

Rectangle box1 =

new

Rectangle(2, 4, 7, 9);

Point p1 = findCenter(box1);

printPoint(p1);

box1.grow(1, 1);

Point p2 = findCenter(box1);

printPoint(p2);

}

Bài t p 4

Đ n gi có th b n đang t

ng t v ph

ng th c giai th a, nh ng ta s vi t thêm m t d ng

ế

ể ạ

ươ

ư ề

ươ

ư

ẽ ế

ộ ạ

m i.

1.

Hãy t o m t ch

ng trình m i có tên

ươ

Big.java r i vi t m t d ng l p cho

ế

ộ ạ

factorial.

2. In ra m t b ng các s nguyên ch y t 0 đ n 30 cùng v i giai th a c a chúng. t m kho ng 15, có th

ộ ả

ạ ừ

ế

ừ ủ

Ở ầ

b n s th y k t qu không còn đúng n a. T i sao v y?

ạ ẽ ấ ế

3.

BigIntegers là các đ i t

ng Java v i kh năng bi u di n nh ng s nguyên l n tùy ý. Không có gi i h n

ố ượ

ớ ạ

trên nào tr gi i h n kích th

c b nh và t c đ x lý. Hãy đ c tài li u v BigIntegers

ừ ớ ạ

ướ ộ

ố ộ ử

athttp://download.oracle.com/javase/6/docs/api/java/math/BigInteger.html.

4.

Đ dùng đ

c BigIntegers, b n ph i thêm dòng

ượ

import java.math.BigInteger vào đ u ch

ng trình c a

ươ

b n.

5.

Có vài cách t o nên m t BigInteger, nh ng tôi khuyên b n cách dùng

ư

valueOf. Đo n mã sau chuy n đ i

m t s nguyên thành

ộ ố

BigInteger:

int

x = 17;

BigInteger big = BigInteger.valueOf(x);

Hãy gõ đo n mã l nh này r i ch y th . C g ng in ra m t BigInteger.

ử ố ắ

6.

Vì BigIntegers không ph i là ki u nguyên th y nên các toán t toán h c thông th

ng không th thao

ườ

tác v i chúng. Thay vào đó, ta ph i dùng nh ng ph

ng th c nh

ươ

ư add. Đ c ng hai BigInteger, hãy kích

ể ộ

ho t

ạ add lên m t s r i truy n s kia làm đ i s . Ch ng h n:

ộ ố ồ

ề ố

ố ố

BigInteger small = BigInteger.valueOf(17);

BigInteger big = BigInteger.valueOf(1700000000);

BigInteger total = small.add(big);

Hãy th m t s ph

ng th c khác, nh

ử ộ ố

ươ

ư multiply và pow.

7.

Chuy n đ i

ổ factorial sao cho nó tính toán v i BigInteger r i tr l i k t qu cũng là m t BigInteger. B n

ả ạ ế

có th m c k tham s —nó v n s là m t s nguyên.

ể ặ ệ

ẫ ẽ

ộ ố

8. Hãy th in l i b ng b ng ph

ng th c giai th a mà b n v a s a đ i. Li u nó có đúng đ n 30 không?

ạ ả

ươ

ừ ử

ế

B n có th làm cho nó l n đ n bao nhiêu? Tôi đã tính giai th a c a t t c các s t 0 đ n 999, nh ng vì

ế

ừ ủ ấ ả

ố ừ

ế

ư

máy tính c a tôi khá ch m nên m t m t lúc. S cu i cùng, 999!, có t i 2565 ch s .

ố ố

ữ ố

Bài t p 5

Nhi u kĩ thu t mã hóa ph thu c vào kh năng nâng các s nguyên l n lên nh ng lũy th a