一大堆的福利之【USACO题库】Prime Palindromes回文质数

题目描述

因为151即是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 号是回文质数。

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


PROGRAM NAME: pprime


INPUT FORMAT

第 1 行: 二个整数 a 和 b .


SAMPLE INPUT (file pprime.in) 

5 500


OUTPUT FORMAT

输出一个回文质数的列表,一行一个。


SAMPLE OUTPUT (file pprime.out)

5

7

11

101

131

151

181

191

313

353

373

383

输入

输出

样例输入


样例输出


数据范围限制

var
        s:array[0..10000]of longint;
        x,i,j,k,l,a,b:longint;
function fzs(y:longint):boolean;
var
        i:longint;
begin
        fzs:=false;
        for i:=2 to trunc(sqrt(y))+1 do
                if y mod i=0 then exit(true);
end;
begin
        read(a,b);
        x:=3;
        s[1]:=5;
        s[2]:=7;
        s[3]:=11;
        if b>100 then
        begin
        for i:=1 to 9 do
                for j:=0 to 9 do
                begin
                        inc(x);
                        s[x]:=i*101+j*10;
                end;
        end;
        if b>10000 then
        begin
        for i:=1 to 9 do
                for j:=0 to 9 do
                        for k:=0 to 9 do
                        begin
                                inc(x);
                                s[x]:=i*10001+j*1010+k*100;
                        end;
        end;
        if b>1000000 then
        begin
        for i:=1 to 9 do
                for j:=0 to 9 do
                        for k:=0 to 9 do
                                for l:=0 to 9 do
                                begin
                                        inc(x);
                                        s[x]:=i*1000001+j*100010+k*10100+l*1000;
                                end;
        end;
        for i:=1 to x do
        begin
                if s[i]>b then break;
                if fzs(s[i])then s[i]:=0;
        end;
        for i:=1 to x do
        begin
                if s[i]>b then break;
                if s[i]>=a then writeln(s[i]);
        end;
end.

你可能感兴趣的:(给予魔芋(古称蒟蒻)的福利)