问题链接: http://www.codechef.com/problems/CHAPD/
说明:
You are given two positive integers – A and B. You have to check whether A is divisible by all the prime divisors of B.
我的朋友告诉我这个解决方案,但我无法理解这个解决方案背后的逻辑:
解:
import sys t=int(sys.stdin.readline()) for _ in range(t): a,b=map(int,sys.stdin.readline().split()) if (a**65)%b==0: print "Yes" else: print "No"
答案 0 :(得分:3)
此解决方案依赖于输入值限制。 B < 10**18
=&gt; B < 2**60
,因此B
因子分解中的任何素数除数都低于60.然后如果A
具有B
的所有素数除数,则A**60
必须可以被B
整除,如果A**60
可以被B
分割,则它具有所有它的主要除数,因此A
也是如此。