当前位置: 首页 > 面试题库 >

检查一个整数是否是另一个整数的幂

阎元徽
2023-03-14
问题内容

这是一个采访问题:“给定2个整数x和y,检查x是否为y的整数次幂”(例如,对于x = 8和y =
2,答案为“真”,对于x = 10和y = 2 “假”)。

显而易见的解决方案是:

int n = y; while(n < x) n *= y; return n == x

现在我正在考虑如何改进它。

当然,我可以检查一些特殊情况:比如他们xy应该是奇数或偶数,也就是说,我们可以检查的至少显著位xy。但是我不知道我是否可以改善核心算法本身。


问题答案:

您最好将y重复除以x。第一次获得非零余数时,您知道x不是y的整数次幂。

while (x%y == 0)  x = x / y
return x == 1

这将处理您在第一次迭代中的奇/偶数点。



 类似资料:
  • 问题内容: 我需要测试从1到1000的每个数字是3的倍数还是5的倍数。我认为我要这样做的方式是将数字除以3,如果结果是整数,则它将是3的倍数。与5相同。 如何测试数字是否为整数? 这是我当前的代码: 问题答案: 您可以使用模运算符执行此操作, 当且仅当是的精确倍数时,计算结果为true 。在小学数学中,这被称为除法运算的余数。 在您当前的方法中,您执行除法,结果将是 如果使用整数除法,则始终为整数

  • 例如,243是3的完美幂,因为243=3^5。 我以前一直在使用,我认为它工作得很好,但后来我用上面的示例尝试了它,由于浮点运算,它实际上返回了4.99999999999。所以它只适用于非常小的数字,我发现不到大约100个。 我想我可以用一个循环来重复乘法。。。i、 将i设置为3,然后设置为9,然后设置为27,然后设置为81,然后设置为243,这等于目标值,所以我们知道这是一个完美的幂。如果它达到

  • 以下是错误代码: 有谁能帮我解决我的问题吗?

  • 问题内容: 如何检查Java整数是否为另一个数字的倍数?例如,if 是4的倍数。 问题答案: 使用余数运算符(也称为模运算符),该运算符返回除法的余数,并检查其是否为零:

  • 这可能吗?如果可能,我该如何正确地做到这一点?希望能够检查它是否包含1和2,如果是,继续与程序。

  • 问题内容: 在SO上已经问过类似的问题,但是它们有更具体的约束,其答案不适用于我的问题。 一般来说,确定任意numpy数组是否是另一个数组的子集的最有效方法是什么?更具体地说,我有大约20000x3的数组,我需要知道完全包含在集合中的1x3元素的索引。更普遍地讲,是否有更Python化的方式编写以下代码: 对于我的用例,我可以安全地假设len(master)<<20000。(因此,可以安全地假设m

  • rank ▲ ✰ vote url 41 487 108 705 url 检查一个字符串是否是一个数字 如果一个字符串可以被看做一个数字那么有什么好的方法可以检测出来? 我能想到的方法: def is_number(s): try: float(s) return True except ValueError: return Fals

  • 我的两个列表中有以下元素,清单1[A F K]和清单2[B A C F K]。清单1的所有元素都在清单2中,因此它应该返回true 我尝试使用list1.containsAll(list2),但它并不支持我。 我尝试在这两个列表中循环,如果找到匹配,我就清空第一个列表中的那个位置,但这不起作用,因为我认为它会受到并发修改的影响。这是我的代码 在这里,subTreeList最终输出[A]。我知道它会