回文质数

题意

找出范围[a,b](5 <= a < b <= 100,000,000)( 一亿)间的所有回文质数;


分析

找出所有的回文数再判断它们是不是质数(素数).


var
a,b,l:longint;


function work(w:longint):longint;
var
t,s:longint;
begin
    t:=w;
    s:=0;
    while t<>0 do
    begin
        inc(s);
        t:=t div 10;
    end;
    work:=s;
end;


function ss(s:string):longint;
var
sz,i:longint;
begin
    if (length(s)=2)and(s<>'11') then exit(0);
    val(s,sz);
    if (sz<a)or(sz>b) then exit(0);
    for i:=2 to trunc(sqrt(sz)) do
    if sz mod i=0 then
    begin
        exit(0);
        break;
    end;
    ss:=sz;
end;


procedure hw(k:longint);
var
w1,w2,i,j,bz:longint;
s1,s2:string;
begin
    if k>l then exit;
    if k mod 2=0 then
    begin
        w1:=1;
        w2:=9;
        for i:=1 to k div 2-1 do
        begin
            w1:=w1*10;
            w2:=w2*10+9;
        end;
        for i:=w1 to w2 do
        begin
            str(i,s1);
            s2:=s1;
            for j:=length(s1) downto 1 do
            s2:=s2+s1[j];
            bz:=ss(s2);
            if bz<>0 then writeln(bz);
        end;
    end else
    begin
        w1:=1;
        w2:=9;
        for i:=1 to (k+1) div 2-1 do
        begin
            w1:=w1*10;
            w2:=w2*10+9;
        end;
        for i:=w1 to w2 do
        begin
            str(i,s1);
            s2:=s1;
            for j:=length(s1)-1 downto 1 do
            s2:=s2+s1[j];
            bz:=ss(s2);
            if bz<>0 then writeln(bz);
        end;
    end;
    hw(k+1);
end;




begin
    read(a,b);
    l:=work(b);
    hw(1);
end.

转载于:https://www.cnblogs.com/YYC-0304/p/9500195.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值