level 1
三、可逆质数(knzs.pas、knzs.c)
如果把一个质数N的每一位倒过来排列得到的整数N1也是质数,则称N为可逆质数.显然一位质数都是可逆质数。请编一个程序求出大于等于a且小于等于b的所有可逆质数,最后输出可逆质数的个数。
输入输出样例:
输入:
7 32 (1<a<b<10000)
输出:
7
11
13
17
31
T=5 (可逆质数的个数)
2016年06月04日 23点06分
1
level 9
不知道对不对,反正数据对了……
var
a,b,n,sum,i,tn:longint;
st1:string;
function prime(x:longint):boolean;
var i:longint;
begin
prime:=false;
if x=2 then exit(true);
for i:=2 to trunc(sqrt(x)) do
if x mod i=0 then exit;
prime:=true;
end;
function change(x:string):string;
var i:longint;
begin
change:='';
i:=1;
while i<=length(x) do
begin
change:=x[i]+change;
inc(i);
end;
end;
begin
readln(a,b);
sum:=0;
for i:=a to b do
begin
str(i,st1);
val(change(st1),tn);
if (prime(i)) and (prime(tn)) then begin writeln(i);inc(sum)end;
end;
writeln('T=',sum);
end.
2016年06月05日 02点06分
2
level 1
const
UBOUND=10000;
function InverseDeci(x:LongWord):LongWord;
begin
InverseDeci:=0;
while x >0 do
begin
InverseDeci:=InverseDeci*10;
inc(InverseDeci, x mod 10);
x:=x div 10;
end;
end;
var
IsPrime: array [0..UBOUND] of Boolean;
procedure SetPrimeList;
//
begin
// 筛法打表
end;
var
Left, Right, i:LongWord;
Total:LongWord=0;
begin
SetPrimeList;
ReanLn(Left, Rigt);
for i:=Left to Right do
if IsPrime[i] and IsPrime[InverseDeci(i)] then
begin
WriteLn(i);
inc(Total);
end;
WriteLn('T=', Total);
end.
这里可以避免使用字符串和整数的转换。
2016年07月06日 10点07分
6