求pascal的一道题

来源:百度知道 编辑:UC知道 时间:2024/09/21 20:38:19
求pascal的一道题,题目是
寻找160以内的素数,输出符合要求的素数
要求:他的倒序数、数码和(如123的数码和是1+2+3)、数码积(如123的数码积是1*2*3)都是素数或1(如11是素数,他的倒序数也是素数,他的数码和是素数,他的数码积是1,所以输出11)。
事先声明:我只要做法,不要答案!!

穷举+判断素数+判断倒序数是否为质数+数码和是否符合条件+数码积是否符合条件=输出

穷举1到160间的素数,如果符合以上要求则输出。

var for1,smj,smh,Parch,one:integer;
Dx:boolean;
function Pzs(num:integer):boolean;
var for1:integer;
begin
Pzs:=true;
for for1:=2 to num-1 do if num mod for1=0 then Pzs:=false;
if num=0 then Pzs:=false;
end;

begin{main}
for for1:=2 to 160 do begin
if for1 div 100>0 then Dx:=Pzs((for1 mod 10)*100+((for1 div 10) mod 10)*10+(for1 div 100)) else
if for1 div 10>0 then Dx:=Pzs((for1 mod 10)*10+(for1 div 10)) else Dx:=Pzs(for1);
if Dx=false then continue;
smj:=1;smh:=0;
Parch:=for1;
repeat
one:=Parch mod 10;
smj:=smj*one;
smh:=smh+one;
Parch:=Parch div 10;
until Parch=0;
if Pzs(for1) and Pzs(smj) and Pzs(smh) then writeln(for1);
end;
readln;
end.
我不说太多
有问题请提问
-。-!

begin
k:=0;
for i:=2 to 160 do begin<