Lại vấn đề giải thuật... Căn bậc 2 của một số??? How to SQRT(x)??

Không biết có được coi là vấn đề nhức nhối không nhỉ??.. :v

Cái vấn đề căn bậc 2 của một số nguyên dương hẳn là ai ai cũng biết rồi... từ việc lần mò tính toán rồi nhớ nhớ quên quên mấy cái công thức hay dãy ăn sẵn gì gì ấy trong toán đại số ( đậu,.. mình ghét Đại.. :'( ) cho tới làm sao để máy tính hiểu rồi tính hộ mình được thì ai cũng thấy quen thuộc rồi...
Và cái √ còn xuất hiện ở rất nhiều nơi, có mặt ở hết công thức toán học này, lại đến công thức vật lý nọ,... Cơ bản thì nghĩ cũng đau đầu phết,... nhất là khi vấn đề rơi vào đầu cái thằng ghét đặc toán như mình,.. ( làm mình lại nhớ đến cảnh Đờ Sa Cu Ra,.. à nhầm Dracula ăn phải bát bún tưới giấm tỏi ớt.. :v )

Thôi,.. xàm xàm suốt lại bị các thánh chửi,.. em vào đề vậy,... Chả là hôm bữa,.. "đi chơi ở Hà Nội" bị "cả hội" đố tính cạnh của hình vuông, cho trước diện tích... ô uê...

cơ mà điều kiện là méo được động đến thư viện nào cả,.. chơi với rẽ nhánh, với lặp, với +-*/ thôi...
ờ,.. cũng ô tô kê,.. lại hì hục code code kiếc kiếc cái hàm,...

Có mỗi thế thôi mà,... cần chi phải viết blog nhỉ.. ??..!!

Đùa thế chứ chưa hết đâu,.. hôm nay ngồi trên giảng đường ấy,.. tiết thảo luận thì cô cho "chơi" mà... hehe,.. vậy là bỏ nháp ra chơi game,.. ngồi một lúc tự dưng ngâm ra được cái ý nghĩ giảm độ phức tạp của chương trình tính căn bậc 2 xuống,.. test tiếc các kiểu, check vài trường hợp nhỏ,.. bắt đầu viết giả mã và chạy tay,... âu dia... quay sang hỏi thằng bạn,.. giờ tính căn của một số thì mày làm thế nào?? ừa,... để tao đoán nhé,.. for à,... nó ngẫm nghĩ một lúc,... nghe cách nó cũng thấy khá hay,.. giảm được cơ số độ phức tạp luôn!! :v

Cách nó thì thế này ( mình chỉ nói lại ý hiểu của mình theo cách nó mô ta chứ chưa code thử ) :
- B1: Tạo số a bằng số bị căn
- B2: Lấy a chia cho 2 rồi gắn kết quả vào a
- B3: Kiểm tra a * a có lớn hơn số bị căn, nếu có thì quay lại bước 2, không thì qua bước 4
- B4: Tới đây thì lại chạy cái vòng lặp for hay while gì đó để tính căn,.. khác là mình cho chạy soChia từ a thôi.. :3

Cơ mà với mình thì chưa thoả mãn.. :3
Vậy là từ cái đống trong 2 tờ nháp,.. mình bắt đầu code trên máy,.. và sau một hổi test, debug các các kiểu cuối cùng cũng ra lò.. :3

Trên là code của mình đã commend các kiểu cho dễ hiểu,.. mình đã test với một vài trường hợp và với ví dụ input của chương trình là:
900000000000000 thì kết quả nhận được là 30000000 với số lần lặp của trường hợp này là 17!!

à, code của mình mới chỉ tính căn của các số nguyên dương thôi,.. các bạn có cao kiến gì thì chỉ mình với nhé!!

Trên là phần xàm xàm của mình, các bạn có gì góp ý thì commend cho mình biết với nhé!!

Thanks for watch!

Trịnh Trọng Trần Bá

Null..

Không có nhận xét nào:

Đăng nhận xét