我有一个练习,需要找到编写一个程序,你应该找到如果N!除以N^2。
1≤N≤10^9
我想用简单的方法创建阶乘函数并将其分为N的力量,但显然它不起作用。 只是算法或伪代码就足够了找N!除以n^2
Q
找N!除以n^2
-2
A
回答
3
对于任何n > 4
,如果n
是prime
,然后n!
不是均匀地n^2
整除。
下面是简单的解释来支持我的观点:n!
由n
分
后,我们只剩下(n-1)!
在需要由n
划分分子。所以我们需要n
或分子中的n
的倍数,以使得(n-1)!
能被n
平分,当n
为素数时永不会发生。
虽然以上将始终发生在n
是非素数。潜入编号理论
希望它有帮助!
编辑:这是上面的一个简单的Python代码。复杂性是O(sqrt(N))
:
def checkPrime(n):
i = 2
while i<n**(1/2.0):
if n%i == 0:
return "Yes" # non-prime, so it's divisible
i = i + 1
return "No" # prime, so not divisible
def main():
n = int(raw_input())
if n==1:
print "Yes"
elif n==4:
print "No"
else:
print checkPrime(n)
main()
输入:
7
输出:
1
这是关系到虽然更容易比Wilson's Theorem它说,一些n > 1
是素数,如果并且只有在
(n-1)! = -1 (mod n)
这是代数等于说n>1
是素数当且仅当
n! = -n (mod n^2)
此外,它是已知的,容易证明,(引自维基百科)
除4之外,其中3! = 6≡2(mod 4),如果n是 复合然后(n - 1)!与0(mod n)一致。
因此具有4是唯一的例外,如果n
是复合材料,因此(n-1)! = 0 (mod n)
和n! = 0 (mod n^2)
如果n
为素数,因此n! = -n = n^2-n (mod n^2)
n!
不全等0
在这种情况下。
如果您想要证明n
,n!
在除以n^2
之后留下n^2-n
的余数,那么需要Wilson定理的全部能力。对于这个问题,所有你需要知道的是它不是零。
在任何情况下,您都可以编写一个运行素数检查的程序,但是否这将被认为是有效的解决方案取决于分配问题的人。
相关问题
- 1. 查找除以的高度数N
- 2. C++ 11标准通过“auto n2 = const_cast <int &>(n);”保证“n2是int&”吗?
- 3. 以编程方式从废纸篓中删除N2 CMS节点
- 4. 测试ID不在(n,n1,n2)中的位置
- 5. 优化N2 CMS
- 6. 是否有快速查找if(n-1)的方法!可以被n整除?
- 7. 找到最小的N使得N!可以被一个素数整除
- 8. Pythonic找到x可以被N整除的最小整数?
- 9. 查找n位数的子序列数,可以被8整除
- 10. 查找可以被a或b整除的第N个数字
- 11. N2常见内容
- 12. 删除 '\ n \ n。' C++
- 13. 给定“T,总数”和“N,天数”,如何将T除以N使得n1 + n2 ...等于指数曲线中的T?
- 14. 查找以'n'开头的用户名
- 15. 哪里可以找到O(n^2)和O(n)等的含义?
- 16. 删除/重构,以避免N + 1
- 17. 删除\ r \ n \ r \ n
- 18. 删除\ r \ n \ r \ n
- 19. 为Ninject实现N2.Engine.IServiceContainer
- 20. 部队端N2如果HAML
- 21. OpenMDAO产生N2图失败
- 22. N2 NullReferenceException on“Html.DroppableZone(”h1“)。Render()”
- 23. 如何查找O(n1 + n2)中的链表和BST的交集?
- 24. 删除\ n
- 25. 删除\ N“lines.replace”
- 26. n!实现以n^100为log N
- 27. \ n \ n \打破行以Unicode
- 28. Ruby:Rubeque - 难以与* n或n
- 29. 如何改进此方法以从ArrayList中删除重复项,以便它比O更有效(n2)
- 30. 查找溶液复发:T(N)= 2 T(N/4 +√N)+(√10)N
由于这是一项家庭作业问题,您能告诉我们您到目前为止所尝试过的方法吗? –
你的问题中的'n'和'N'是否是相同的数字? – Henry
@JohnFeminella我提到试图用标准方式创建阶乘函数并将其分为“pow(n,2)”,但它没有工作。因为N可能高达10亿 –