(PARI)a(n)=如果(n<10^9,返回(numbpart(n)%2));我的(r=n%4,u=select(k->k^2%32==8*r+1,[1..31]),st=u[1],m=n\4,s);u=[u[2]-u[1],u[3]-u[2],u[4]-u[3],u[1]+32-u[4];对于步骤(t=[1,3,7,5][r+1],平方(32*m-1),u,k=t^2>>5;如果(a(m-k),s++));s%2\\Merca算法,切换到n小于10^9的直接计算。非常耗时,但内存使用率低-查尔斯·格里特豪斯四世2018年1月24日
p _ 0=1
p k m | k<=m=p k(m-k)`异或` p(k+1)m | k>m = 0