Project Euler 58
Project Euler 58
题目
Spiral primes
Starting with 1 and spiralling anticlockwise in the following way, a square spiral with side length 7 is formed.38 17 16 15 14 13 30
39 18 5 4 3 12 29
40 19 6 1 2 11 28
41 20 7 8 9 10 27
42 21 22 23 24 25 26
43 44 45 46 47 48 49
It is interesting to note that the odd squares lie along the bottom right diagonal, but what is more interesting is that \(8\) out of the \(13\) numbers lying along both diagonals are prime; that is, a ratio of \(\dfrac{8}{13} \approx 62\%\).
If one complete new layer is wrapped around the spiral above, a square spiral with side length \(9\) will be formed. If this process is continued, what is the side length of the square spiral for which the ratio of primes along both diagonals first falls below \(10\%\)?
解决方案
这个矩阵的四个角的元素的通项公式分别是:\(4n^2-10n+7,4(n-1)^2+1,4n^2-6n+3,(2n-1)^2\),其中\(n\ge 1\),用的是第28题的结论。
因此,这份代码将通过公式枚举出一个个质数,然后单独进行判断即可。
代码
1 | from tools import is_prime |