[Bài tập] Phân tích N thành tổng bình phương hai số nguyên dương

 
Ta sẽ sử dụng hai code sqr (bình phương) và sqrt (căn) trong bài này để có thể dễ dàng xử lý đề bài.

program thamkhaovn;
uses crt;
var a:longint;
    b,n,i:integer;
BEGIN
    clrscr;
    write('Nhap N: ');
    readln(n);
    for i:=1 to int(sqrt(n div 2)) do
    begin
        a:=n-sqr(i);
        b:=int(sqrt(a));
        if (b*b+i*i)=n then writeln(i,' ',b);
    end;
    readln;
END.

Chương trình trên được viết theo thuật toán:
- Dùng biến i chạy từ 1 đến căn của n chia 2.
- Cho a là hiệu của phép tính: n trừ i bình phương.
- Thử xem phần nguyên của căn a bình phương cộng i bình phương có bằng n không
- Nếu bằng xuất i và phần nguyên của căn a ra màn hình.

Ví dụ:
Nhap N: 200
Kết quả:
2 14
10 10

Note: Sau khi kiểm tra lại Ad có thấy là chương trình cũ không thể chạy được nên đã chỉnh sửa lại, mong mọi người thông cảm!
Share on Google Plus
Hỗ trợ trực tuyến