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

System.out.println(backwards);

s ph i là

yenwoD nellA

Bài t p 9

Hãy vi t m t ph

ng th c đ quy có tên

ế

ươ

ứ ệ

power đ nh n vào

x và m t s nguyên

ộ ố

n r i tr

l i

x

n

. G i ý: m t đ nh nghĩa đ quy đ i v i phép tính này là

ộ ị

ố ớ

x

n

= x · x

n −1

. Đ ng th i, c n nh r ng m i

ờ ầ

ớ ằ

s nâng lên lũy th a b c 0 đ u b ng 1. Câu h i khó t ch n: b n có th làm cho ph

ng th c này hi u

ự ọ

ươ

qu h n, trong tr

ng h p

ả ơ

ườ

ợ n ch n, b ng cách dùng công th c

x

n

= (x

n/2

)

2

.

Bài t p 10

(Bài t p này đ

c d a trên trang 44 cu n sách Structure and Interpretation of Computer

ượ ự

Programs c a Abelson và Sussman.) Kĩ thu t sau đây có tên g i Thu t toán Euclid vì nó xu t hi n trong

t p C b n c a Euclid (Cu n s 7, kho ng năm 300 TCN). Có l đây là thu t toán đáng k t lâu đ i

ơ ả ủ

ố ố

ể ừ

nh t

1

. Quy trình tính toán đ

c d a theo quan sát th y, n u

ượ ự

ế r là ph n d trong phép chia

ư

a cho b, thì

các

c s chung c a

ướ ố

ab cũng b ng c s chung c a

ướ ố

br. Do v y ta có th dùng ph ng trình

ươ

gcd(a, b) = gcd(b, r)

đ liên ti p rút g n bài toán tính

c s chung (GCD) v bài toán tính GCD c a các c p s nguyên ngày

ế

ướ ố

ặ ố

càng nh h n. Ch ng h n,

ỏ ơ

gcd(36, 20) = gcd(20, 16) = gcd(16, 4) = gcd(4, 0) = 4

ng ý r ng GCD c a 36 và 20 thì b ng 4. Có th th y r ng v i b t kì hai s ban đ u nào, cách liên ti p

ể ấ ằ

ớ ấ

ế

rút g n này cu i cùng s cho ta m t c p s mà s th hai b ng 0. Khi đó GCD s b ng s còn l i trong

ộ ặ ố

ố ứ

ẽ ằ

c p.

Hãy vi t m t ph

ng th c có tên

ế

ươ

gcd đ nh n tham s là hai s nguyên r i dùng Thu t toán Euclid đ

tính và tr l i

c s chung l n nh t c a hai s .

ả ạ ướ ố

ấ ủ

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.