f: =proc(n)局部y,c,d,dp,i,delta,m;
y: =转换(n^2,基数,10);
d: =nops(y);
如果d::即使如此
如果y[-1]<>1,则返回假fi;
dp:=d-1;
y: =y[1..-2];
c[dp]:=1;
其他的
dp:=d;
c[dp]:=0;
fi;
c[0]:=0;
对于i从1到地板(dp/2)do
增量:=y[i]-y[dp+1-i]-c[i-1]-10*c[dp+1-i];
如果delta=0,则c[dp-i]:=0;c[i]:=0;
elifδ=-1,则c[dp-i]:=1;c[i]:=0;
elifδ=-10,则c[dp-i]:=0;c[i]:=1;
elifδ=-11,则c[dp-i]:=1;c[i]:=1;
否则返回false
fi;
如果y[i]+10*c[i]-c[i-1]<0或(i=1且y[i]+10*c[i]-c[i-1]=1),则返回假fi;
od;
m: =(dp+1)/2;
增量:=y[m]+10*c[m]-c[m-1];
如果不是成员(delta,[seq(i,i=0..18,2)]),则返回false fi;
[seq(y[i]+10*c[i]-c[i-1],i=1..m)]
结束进程:
g: =程序(L)局部T,d,T,p,x,i;使用组合;
d: =无(L);
T: =cartprod([select(T->T[1])::奇数,[seq([L[1]-x,x],x=最大值(1,L[1]-9)。。最小值(L[1],9)]),
序列([seq([L[i]-x,x],x=最大值(0,L[i]-9)。。最小值(9,L[i])],i=2..d-1));
而不是T[完成]do
t: =t[下一个值]();
p: =加(t[i][1]*10^(i-1),i=1..d-1)+L[-1]/2*10^(d-1)+
加(t[i][2]*10^(2*d-i-1),i=1..d-1);
如果isprime(p),则返回pfi;
od;
-1
结束进程:
p: =11:问:=29:
当p<10^8时
p: =下一素数(p);
d: =1+ilog10(p^2);
如果d::偶数且p^2>=2*10^(d-1),则p:=下一个素数(底数(10^(d/2)));fi;
v: =f(p);
如果v=false,则下一个fi;
q: =克(v);
如果q=-1,则下一个fi;
Q: =Q,Q;
日期:
Q;