(PARI)gpf(n)=vecmax(因子(n)[,1]);
ispsooth(n,p,{lim=1<<256})=如果(n<=lim,n==1||gpf(n)<=p,my(n=n/p^估值(n,p));对于素数(q=2,p,N=N/q^估值(N,q);如果((N<=lim&&isprime(N))||N==1,返回(N<=p)); 0);\\检查n是否为p平滑,如果n太大,则使用蛮力
isA354531(n,{lim=256},{p_lim=1<<32})={
我的(N=2^N-1);
如果(isprime(N),返回(1));
如果(n>lim,对于素数(p=3,p_lim,如果(n%p==0&&!ispsooth(2*n+p,p),return(0)));\\首先检查是否存在2^n-1的素因子p<=p_lim,使得2*(2^n-1)+p不是p-光滑的(对于大n)
my(d=除数(n));
对于(i=1,#d,my(f=系数(2^d[i]-1)[,1]);对于(j=1,#f,如果(!ispsooth(2*N+f[j],f[j],1<<lim),返回(0)));1然后检查p|2^d-1,d|n的2*(2^n-1)+p是否为p-光滑
}