Project Euler 291
Project Euler 291
题目
Panaitopol Primes
A prime number \(p\) is called a Panaitopol prime if \(p = \dfrac{x^4 - y^4}{x^3 + y^3}\) for some positive integers \(x\) and \(y\).
Find how many Panaitopol primes are less than \(5\times10^{15}\).
解决方案
令\(g=\gcd(x,y)\),那么有\(x=ga,y=gb\),其中\(\gcd(a,b)=1\)。
将上式写成\(p(x^3+y^3)=x^4-y^4\),那么可以写成:
\[p(a^2-ab+b^2)=d(a^2+b^2)(a-b)\]
那么,\(a^2-ab+b^2,(a^2+b^2)(a-b)\)这两个数是互质的。
因此,\(p=(a^2+b^2)(a-b),d=a^2-ab+b^2\)。
但是,\(p\)是一个质数,但是有\(a^2+b^2\)和\(a-b\)两个质因式。因此\(a-b=1\)。
得到\(p\)是形如\(p=a^2+(a+1)^2\)的质数。
令\(f(n)=2n^2+2n+1\)
那么接下来使用和216题相似的筛法:如果\(p\mid f(n)\),那么\(p\mid f(kp+n),p\mid f(kp-n-1)\),其中\(k>0\)。
原因:\(f(kp+n)=2(kp+n)^2+2(kp+n)+1 = 2k^2p^2+4knp+2kp+2n^2+2n+1\)。我们已经假定了\(p\mid 2n^2+2n+1\),因此\(p\mid f(kp+n)\)成立。\(p\mid f(kp-n-1)\)的情况类似。
这说明只要发现\(f(n)\)有一个质因子\(p\),就可以将它把\(f(n+p),f(n+2p),\dots,f(p-n-1),t(2p-n-1),\dots\)筛掉。
如果有一个数始终无法筛掉,说明它本身就是一个质数。
代码
1 |
|