pascal回文数问题

来源:百度知道 编辑:UC知道 时间:2024/05/12 04:44:34
如果一个数从左边读和从右边读都是同一个数,就称为回文数.例如6886就是一个回文数,求出所有的既是回文数又是素数的三位数。

program ex12b(input,output);
var a,b,j,k,l,n:longint;
sth:string;
l1,l2,i,d1,d2:integer;
function power(c,d:integer):longint;
var m:integer;
begin
power:=1;
for m:=1 to d do begin power:=power*c; end;
end;
begin
assign(input,'pprime.in');
assign(output,'pprime.out');
reset(input);
rewrite(output);
read(a,b);
str(a,sth);
l1:=length(sth);
str(b,sth);
l2:=length(sth);
for i:=l1 to l2 do
begin
if odd(i) then d1:=(i div 2)+1 else d1:=(i div 2);
if odd(i) then d2:=d1-1 else d2:=d1;
for j:=power(10,d1-1) to power(10,d1)-1 do
begin
n:=j;
str(j,sth);
for k:=d2 downto 1 do n:=n*10+ord(sth[k])-48;
if (n>=a) and (n<=b) then
for l:=2 to trunc(sqrt(n)) do
if (n mod l)=0 then break
else if l=trunc(sqrt(n))
then writeln(n);
end;
end;
close(input);