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.
Đăng nhận xét