我知道通常的方法是迭代地找到n-1阶乘然后检查。但是它具有O(n)的复杂性并且对于大n需要太多时间。还有其他选择吗?
答案 0 :(得分:15)
是的:如果n
是素数,显然(n-1)!
不能被n
整除。
如果n
不是素数,可以用n = a * b
写成a != b
,那么(n-1)!
可以被n
整除,因为它包含a
}和b
。
如果n = 4
,(n-1)!
不能被n
整除,但如果n = a * a
a
是素数> 2,(n-1)!
可以被n
整除,因为我们在a
中找到2a
和(n-1)!
(感谢Juhana的评论)。