题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5391
题意:给你一个n,问你(n-1)! % n的值。
此题用到的是一个威尔逊定理,威尔逊定理的内容是说如果n是素数,那么一定存在(n-1)! % n == -1,其实如果比较机智知道打表的同学应该也能看出这个规律,那么小编这里证明一下这个威尔逊定理,首先在这个MOD n的乘法中,一共有n-1个元素,如果n为素数,那么每一个元素一定存在一个逆元,那思考,如果每元素都有逆元那么两两配对结果不应该是1吗……当然还得考虑没有办法两两配对的,那就是逆元就是其本身的,x^2 MOD n = 1, 解得x = 1或者x = n-1,那么我们在阶层中除了这两个特殊的刚刚好可以两两配对,又因为(n-1)%n == n-1,所以结果就是n-1。
那么素数就解决了,我们再看非素数,仔细想,如果存在一个因子x,那么x * (n/x) == n,所以如果是一个非素数,那么一定存在两个因子,使得其积为n,那么整个阶层就一定是n的倍数了,所以答案就为0了。但是真的每一个非素数都是这样的吗?当然我们还得考虑特殊情况,那就是只存在一个因子x,且x^2 == n,这种明显就不能构成n的倍数,解出来这个值为4。
所以这道题我们只需要判断是否是素数,如果是非素数再特判一下4就好了。