这个问题大家思考一下吧!
http://www.51nod.com/question/index.html#!questionId=538
n^(n!) mod p = b,求符合条件的n。
[解决办法]
既然写p了我就默认质数了。
b=0不用说了。
b=1的话n=1和n>=p-1不整除p的全都是。
所以接下来只要看2<=n<=p-2的。不过题目p没有范围,需要clarification才能继续做下去。
[解决办法]
这种问题一般都是证明结果n有周期性,然后在一个周期里遍历就好了,比如尝试证明结果n的周期是p。
或者证明结果n有固定范围,然后在这个范围里遍历,例如证明结果n一定小于p。
不妨0<=b<p
b=0时,解为n=k*p,k取0,1,2,....,这个很容易证明
b>0时,
(1)n和p一定互素,所以n的任意次方和p互素
(2)由费马小定理,如果m和p互素,则m^(p-1)=1 (mod p)
如果n>=p-1那么n!一定是(p-1)的倍数,即n!=s*(p-1),那么
n^(n!)=n^(s*(p-1))=(n^s)^(p-1)
由(1)n^s和p互素,由(2)知n^(n!)=(n^s)^(p-1)=1 (mod p)
所以有如下结论:
b=0时,解为n=k*p
b=1时,n>=p-1都是解,n=1也是解,对于1<n<p-1需要遍历求解
b>1时,n>=p-1都不是解,即n<p-1,遍历求解
[解决办法]
b=0时,解为n=k*p
b=1时,n>=p-1且n!=k*p都是解,n=1也是解,对于1<n<p-1需要遍历求解
b>1时,n>=p-1都不是解,即n<p-1,遍历求解
上面写错了,以上证明的就是2楼的结论。
[解决办法]
这个我们需要分析一下模p,
显然,对于充分大的n,由于n!都是phi(p)的倍数,结论就很简单了。所以我们主要需要分析n<p的情况。
如果p是素数,那么我们需要查看phi(p)=p-1,如果p-1也没有大素因子,那么也很简单,因为必然有不大的n,使得n!是p-1的倍数,也就是说我们需要穷举的范围会很小。
最头疼的情况是p-1有一个很大的素因子的情况,比如p-1=2q,q是另外一个素因子,
对于这种情况,我们首先可以判断至少一半的b是无解的,因为对于n>=2,n! 必然是偶数,所以n^(n!)必然是p的平方剩余。如果b不是平方剩余,必然无解。但是如果b是平方剩余,我也没有好的办法,穷举n=2,3,...,q-1必然是可行的,但是复杂度很高