如何找到一个数字'n'的除数的数量,它们也可以被另一个数字'k'整除而不循环遍历n的所有除数? 我尝试了以下方法:
关联数组A中n的所有素因子的存储幂并且对k做的类似,存储了数组B中所有素数因子的幂。
ans = 1
for a in A: // Here a is the prime factor and A[a] gives its power
ans *= if( a is present in B ) ? 1 : A[a] + 1
print ans
注意:这不是作业。
答案 0 :(得分:2)
要查找n
可被k
整除的k
除数的数量:
n
不是n/k
的除数,则数字为0,d
。如果n
是k
的除数,可以被d/k
整除,则n/k
是e
的除数。相反,如果n/k
是e*k
的除数,则n
是k
的除数,可以被ans = 1
for a in A: // Here a is the prime factor and A[a] gives its power
ans *= if( a is present in B ) ? 1 : A[a] + 1
print ans
整除。
您的代码
n
计算与k
相互作用的{{1}}的除数数。
答案 1 :(得分:1)
如果除数是素数,那么除了循环遍历所有除数之外别无他法。否则RSA将不会成为保存加密算法。