H24

Câu 3. Số nguyên tố toàn diện

            Hôm nay, An được học về số nguyên tố. Số nguyên tố là số có đúng hai ước nguyên dương là 1 và chính nó. Ví dụ số 19 là số nguyên tố nhưng số 20 thì không.

            Vốn là người có nhiều ý tưởng sáng tạo, An đưa ra một khái niệm mới gọi là “Số nguyên tố toàn diện”. Một số nguyên dương  được gọi là số nguyên tố toàn diện nếu thỏa mãn đồng thời 3 điều kiện sau:

-    là số nguyên tố.

-  Lần lượt bỏ đi các chữ số bên phải của x thì phần còn lại của nó vẫn là số nguyên tố.

-  Thêm vào bên phải của  một trong các chữ số từ 0 đến 9, số thu được cũng là số nguyên tố.

Ví dụ số 313 là số nguyên tố toàn diện vì:

-  313 là số nguyên tố.

-  Bỏ đi số 3 bên phải ta được số 31 là số nguyên tố, bỏ tiếp số 1 ta còn số 3 cũng là số nguyên tố.

-  Thêm số 7 vào sau 313 ta được số 3137 là số nguyên tố.

Yêu cầu: Cho dãy A gồm  số nguyên dương . Hãy đếm số lượng số nguyên tố toàn diện trong dãy A.

Dữ liệu vào:

-         Dòng đầu chứa số nguyên

-         Dòng thứ hai chứa n số nguyên dương

Kết quả: Một số nguyên dương là số lượng số nguyên tố toàn diện trong dãy A

Ví dụ:

 

Dữ liệu vào

Kết quả

Giải thích

6

59 12 57 53 23 313

3

- Có 3 số nguyên tố toàn diện là 59; 23; 313

 

su dung ngon ngu lap trinh pascal nha mong mn giup do

LL
25 tháng 9 lúc 20:54

program ToanDienSo;

var n, i, j, count: integer;

A: array[1..1000] of longint;

isPrime(x: longint): boolean;

var i: longint;

begin

if x < 2 then

begin

isPrime := false;

exit;

end;

for i := 2 to trunc(sqrt(x)) do

if x mod i = 0 then

begin

isPrime := false;

exit;

end;

isPrime := true;

end;

 isToanDienSo(x: longint): boolean;

var temp, i: longint;

multiplier: longint;

begin

if not isPrime(x) then

begin

isToanDienSo := false;

exit;

end;

 temp := x;

while temp > 0 do

begin

if not isPrime(temp) then

begin

isToanDienSo := false;

exit;

end;

temp := temp div 10;

end;

multiplier := 10;

for i := 0 to 9 do

begin

if not isPrime(x * multiplier + i) then

begin

isToanDienSo := false;

exit;

end;

end;

isToanDienSo := true;

end;

begin

 readln(n);

 for i := 1 to n do

read(A[i]);

 count := 0;

for i := 1 to n do i

f isToanDienSo(A[i]) then

count := count + 1;

writeln(count);

end.

Bình luận (1)