Algorithm 需要以下提到的CHAPD解决方案的证明

Algorithm 需要以下提到的CHAPD解决方案的证明,algorithm,Algorithm,问题链接: 说明: You are given two positive integers – A and B. You have to check whether A is divisible by all the prime divisors of B. 给你两个正整数——A和B。 你必须检查A是否能被B的所有素数整除。 一位朋友告诉我这个解决方案,但我无法理解这个解决方案背后的逻辑: 解决方案: 导入系统 t=int(sys.stdin.readline()) 对于范围(t)内的uu:

问题链接:
说明:

You are given two positive integers – A and B. You have to check whether A is divisible by all the prime divisors of B. 给你两个正整数——A和B。 你必须检查A是否能被B的所有素数整除。 一位朋友告诉我这个解决方案,但我无法理解这个解决方案背后的逻辑:
解决方案:
导入系统 t=int(sys.stdin.readline()) 对于范围(t)内的uu: a、 b=map(int,sys.stdin.readline().split()) 如果(a**65)%b==0: 打印“是” 其他: 打印“否”
在观察了这个解决方案后,我无法理解当我尝试测试极值时,为什么作者选择了值“65”,即10^18,10^18,它在PC上给出了内存错误。
我测试了用一些随机值替换值65 64、61、45、33和17,所以我发现对于值17,一个测试用例没有通过,而对于其他值,所有值都需要代码。
您可以看到提交的内容。
我只想知道这个解决方案的证明。

谢谢大家!

此解决方案依赖于输入值限制
B<10**18
=>
B<2**60
,因此
B
的因式分解中的任何素数因子的幂都低于60。然后,如果
A
具有
B
的所有素数因子,
A**60
必须可被
B
整除,如果
A**60
可被
B
整除,则它具有其所有素数因子,因此具有
A
此解决方案依赖于输入值限制
B<10**18
=>
B<2**60
,因此
B
的因式分解中的任何素数因子的幂都低于60。然后,如果
A
具有
B
的所有素数因子,
A**60
必须可被
B
整除,如果
A**60
可被
B
整除,则它具有其所有素数因子,因此具有
A
此解决方案依赖于输入值限制
B<10**18
=>
B<2**60
,因此
B
的因式分解中的任何素数因子的幂都低于60。然后,如果
A
具有
B
的所有素数因子,
A**60
必须可被
B
整除,如果
A**60
可被
B
整除,则它具有其所有素数因子,因此具有
A
此解决方案依赖于输入值限制
B<10**18
=>
B<2**60
,因此
B
的因式分解中的任何素数因子的幂都低于60。然后,如果
A
具有
B
的所有素数因子,
A**60
必须可被
B
整除,如果
A**60
可被
B
整除,则它具有所有的素数因子,因此具有
A

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"