#无法证明,它返回FAIL。
sdd:=n->convert(转换(n,基数,10),`+`):
g: =发现局部proc(n),k1,k2,k3,x,y,m,bd;
发现:=false;
对于1中的k1,而未找到do
对于k2从0到k1-1 do
x: =2^k1+2^k2;
如果sdd(x)=2*n,则发现:=true;断开fi
od od;
对于k1从0到ilog2(x)do
如果sdd(2^k1)=n,则x:=2^k1;断开fi
od;
m: =ilog10(x);
bd:=地板(x/10^m)+9*m;
如果bd<=3*n,则返回xfi;
发现:=false;
对于从2到ilog2(x)的k1,当未找到时,do
对于k2,从1到k1-1,但未找到
对于从0到k2-1的k3,do
y: =2^k1+2^k2+2^k3;
如果y>x或sdd(y)=3*n,则发现:=真;破译fi;
od od od;
如果找到,则x:=最小(x,y)fi;
bd:=楼层(x/10^m)+9*m;
如果bd<=4*n,则x else FAIL fi;
结束进程:
|