假设我给了数字n。我想找出所有小于n的偶数,并且在素数分解中的指数也大于2在n素数分解中的指数。]
如果n = 18,答案是4,即4,8,12,16。
使用从i = 2到小于n的for循环并检查每个i将显示代码中超出了时间限制。
我的方法是不计算任何次数,我将继续除以2。但是约束n = 10 ^ 18。因此,我认为它是O(1)运算。谁能帮助我找到任何公式或算法来尽快找到答案?
假设我给了数字n。我想找出所有小于n的偶数,并且其素因数分解中的指数也要比......>
您的除法受到常数64(对于10 ^ 18〜2 ^ 64)的限制,并且在复杂性理论中O(64)= O(1)。
值分解中的2的数量等于该值的二进制表示形式中的尾随零位的数量,因此您可以使用位操作(例如& 1
和右移shr, >>
)来加快编码速度或应用一些bit tricks
首先假设n