(*首先做*)<<组合数学`(*然后*)fQ[n_]:=块[{d=大多数@除数@n,l=2^(除数Sigma[0,n]-1),i=1},i=1;而[i<l&&Plus@@NthSubset[i,d]!=n、 i++];i==l];lst={};Do[m=n;如果[Mod[n,6]!=0&&DivisorSigma[1,n]>2 n&&并集[Mod[n,Join[lst,{n+1}]][[1]!=0 && fQ@n,附录[lst,n];打印@n],{n,24200000,2}](*罗伯特·威尔逊v2009年8月4日*)
(*输入:偶数范围---输出:原始奇数*)
块[{$RecursionLimit=Infinity},
subOfSum[ss_,kk_,rr_]:=
模[{s=ss,k=kk,r=rr},
如果[s+w[[k]]>=mm&s+w[[k]]<=m,t=False;
转到[完成](*找到*),
如果[s+w[[k]]+w[k+1]]<=m,
subOfSum[s+w[k]],k+1,r-w[[k]]];
如果[s+r-w[[k]]>=m&&s+w[[k+1]]<=m,
subOfSum[s,k+1,r-w[[k]]]];t] ;(*结束subOfSum*)
greedyQ[ab_]:=模块[{abn=ab,v,sum,s,j,jj,k},tt=False;
jj=长度[w];(*开始搜索*)
Do[s=r;总和=0;Do[v=w[j]];总和=总和+v;
如果[sum>abn,sum=sum-v;转到[nxt]];
如果[sum==abn,tt=True;转到[doneG]];s=s-v;
标签[nxt],{j,jj,1,-1}];
jj=jj-1,{k,1,jj-1}];标签[doneG];
(*正确表示找到,错误表示找不到*)tt];(*结束协议Q*)
cnt=0;
Do[If[Mod[n,3]==0,Goto[agn]];执行[If[Mod[n,3]==0,Goto[agn]];r=除数Sigma[1,n];
m=r-2*n;
如果[m>0,fi=FactorInteger[n];largestP=fi[[长度[fi]][[1];
nn=n/largestP;如果[m>2*nn||长度[fi]<3,转到[agn]];
如果[DivisorSigma[1,nn]>2*nn,转到[agn]];t=真;r=r-n;
ww=除数[n];lenW=长度[ww];
执行[如果[ww[[i]]<=m,w=删除[ww,i-lenW];中断[],
r=r-ww[[i]]],{i,lenW-1,1,-1}];
如果[r>=m,
如果[greedyQ[m],t=False,(*2的幂被去掉*)
exp2=fi[[1]][2];sig2=2^(exp2+1)-1;mm=m-信号2;
lenW=长度[w];ww={};
如果[exp2>1,
Do[Do[If[w[[i]]==2^ii,ww=AppendTo[ww,w[i]],
{i,1,lenW}],{ii,0,exp2}];
w=补码[w,ww]
(*结束T,如果*),w=下降[w,2];
(*end Pwr2*)t=subOfSum[0,1,r]]];标签[完成];
如果[t,打印[++cnt,“”,n,“”,t]]];
标签[agn],{n,210000000,2}]]
(*来自Brent Baughn,通过http://mathematica.stackexchange.com/questions/73301/calcuting-weird-numbers(计算怪数),罗伯特·威尔逊v2015年11月21日*)
|