Project Euler 381
Project Euler 381
题目
(prime-$k$) factorial
For a prime $p$ let $S(p) = (\sum(p-k)!) \bmod(p)$ for $1 \le k \le 5$.
For example, if $p=7, (7-1)! + (7-2)! + (7-3)! + (7-4)! + (7-5)! = 6! + 5! + 4! + 3! + 2! = 720+120+24+6+2 = 872$.
As $872 \bmod(7) = 4, S(7) = 4$.
It can be verified that $\sum S(p) = 480$ for $5 \le p < 100$.
Find $\sum S(p)$ for $5 \le p < 10^8$.
威尔逊定理
威尔逊定理:一个数$p$为质数,当且仅当满足下面的条件:
解决方案
假设已知$a=(p-5)!\%p$,那么有
那么接下来的问题是根据威尔逊计算$a$的值。
可以发现,$(p-1)\%p=(p-1)(p-2)(p-3)(p-4)a\%p=24a\%p$。
可以借助威尔逊定理,解出下面的式子,得到$a$的值。
为了避免扩展使用欧几里得算法的值,可以通过计算出$2,3$在$p$上的逆元,间接计算出$24$的逆元。
计算完成后,最终得到$S(p)=-9\cdot(24)^{-1}\% p$。
代码
1 |
|