BÀI TẬP 31. TÌM SỐ NGUYÊN TỐ

Cho hai số nguyên n, m. Viết chương trình tìm các số nguyên tố không vượt quá n sao cho tổng các chữ số của mỗi số đều bằng m.

            Dữ liệu vào từ file: TIMSNT.INP

            - Dòng duy nhất ghi 2 số nguyên n và m (0 < n, m ≤ 106), cách nhau một khoảng trắng.

            Kết quả ra file: TIMSNT.OUT

            - Dòng đầu tiên ghi số lượng các số nguyên tố tìm được

            - Dòng thứ 2 ghi các số nguyên tố thỏa mãn yêu cầu, mỗi số cách nhau một khoảng trắng.

            Ví dụ:

TIMSNT.INP

TIMSNT.OUT

50 5

3

5 23 41

1000 18

0

CODE THAM KHẢO:

program Tim_Snt;

uses crt;

const fi='TIMSNT.INP';

      fo='TIMSNT.OUT';

var  i,n,m,dem: integer;

     f:text;

     snt:array[1..1000000] of integer;

Function Kt_snt(n:integer): Boolean;

var i: integer; KT: boolean;

begin

        KT:= true;

        if n < 2 then KT:=false;

        for i:=2 to n-1 do

        if n mod i = 0 then KT:=False;

        Kt_snt:=KT;

end;

function Tong(m: integer): integer;

var s,a: integer;

begin

    s:=0;

    while m <>0 do

    begin

        a:= m mod 10;

        s:= s+a;

        m:=m div 10;

    end;

    Tong:=s;

end;

begin

        assign(f,fi); reset(f);

        read(f,n,m);

        assign(f,fo); rewrite(f);

        for i:=2 to n do

        if Kt_snt(i) and (tong(i) = m)  then

        begin

                dem:=dem+1;

                snt[dem]:=i;

        end;

        writeln(f,dem);

        for i:=1 to dem do write(f,snt[i],' ');

        close(f); close(f);

end.



 

Nhãn:

Đăng nhận xét

[blogger]

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.
Javascript DisablePlease Enable Javascript To See All Widget