Thứ Sáu, 2 tháng 8, 2019

Bài 39 - Giải thuật nhập môn

Xét một phương trình có dạng như sau: x+y+z=K
Trong đó K là một số nguyên dương. Phương trình này có thể vô số nghiệm. Tuy nhiên, ở đây người ta chỉ quan tâm đến các nghiệm (x,y,z) mà trong đó các số x, y, z đều là các số nguyên tố.
Bài toán: Với số K cho trước ( K<5000), hãy tìm tất cả các bộ số nguyên tố x, y, z ( x<=y<=z) là nghiệm của phương trình trên hoặc cho biết không có nghiệm thỏa mãn yêu cầu bài toán.
Dữ liệu vào: Cho trong file Equa.inp trong đó có chứa duy nhất số K
Kết quả: Ghi ra file Equa.out chứa n+1 dòng (n là số nghiệm tìm được), trong đó:
- Dòng thứ I trong N dòng đầu tiên chứa 3 số nguyên  cho biết bộ nghiệm thứ I tìm được
- Dòng n+1 chứa 3 số 0 cho biết điểm kết thúc file output

1 nhận xét:

  1. Uses crt;
    Var k,i,j:longint;
    t:array[1..10000] of boolean;
    procedure mangnguyento;
    Begin
    For i:=2 to k do
    If t[i]=false then
    Begin
    j:=i*2;
    While j<5000 do
    Begin
    t[j]:=true;
    j:=j+i;
    end;
    end;
    end;
    procedure solving;
    Begin
    For i:=2 to k do
    For j:=k downto i do
    If (t[i]=false)and(t[j]=false)and(k-i-j>1) then
    If (t[k-i-j]=false)and(k-i-j>=j)and(k-i-j>=i) then
    Writeln(i,' ',j,' ',k-i-j);
    end;
    Begin
    readln(k);
    mangnguyento;
    solving;
    readln;
    end.

    Trả lờiXóa

Dùng nick gmail để bình luận. Nếu lần đầu tiên bạn làm điều này thì hệ thống sẽ chuyển bạn sang trang blogger và hỏi bạn chọn tên hiển thị là gì. Bạn hãy nhập tên hiển thị rồi ok là được. Những lần bình luận sau hệ thống sẽ không hỏi nữa. Cảm ơn!

Bài được xem nhiều nhất