将原式写作
$$n^3\cdot\frac{n+p}{n}=m^3,$$
从而$\sqrt[3]{(n+p)/n}$需要是有理数。令
$$b^3=n+p, \quad a^3=n,$$
则有
$$p=b^3-a^3=(b-a)(a^2+b^2+ab),$$
由于p是素数,因此$b-a$只能为1。将$b=a+1$和$n=a^3$带入可得
$$p=a^2+(a+1)^2+a(a+1)=3a^2+3a+1, \quad m=n\cdot\sqrt[3]{\frac{n+p}{n}}=n\cdot\frac{b}{a}=a^2(a+1).$$
因此只需找出不超过一百万的、形如$3a^2+3a+1$的素数即可,易得共有$173$个这样的数。
target=1000000
d=[0]*target
n=2
while n < target:
for i in range(n+n,target,n):
d[i]=d[i]+1
n=n+1
while n< target and d[n]>0:
n=n+1
q=set([k for k in range(2,target) if d[k]==0])
r=[p for a in range(1,600) for p in [3*a*a+3*a+1] if p in q and p< target]
print len(r)
|