在Python中检查一个数字是否为三的幂次方之和的程序
假设有一个数字n,我们要检查是否可能用不同的三的幂次方来表示n的和。如果存在一个整数x使得y = 3^x,则一个整数y被称为三的幂次方。
因此,如果输入为n = 117,那么输出将为True,因为117 = 3^4 + 3^3 + 3^2 + = 81 + 27 + 9。
要解决这个问题,我们将遵循以下步骤 −
- for i in range 16 to 0, decrease by 1, do
- 如果 n >= 3^i , 那么
- n := n – 3^i
- 如果 n >= 3^i , 那么
- 如果 n > 0, 那么
- return False
- return True
示例
让我们看下面的实现以更好地理解。
def solve(n):
for i in range(16, -1, -1):
if n >= pow(3,i):
n -= pow(3,i)
if n > 0:
return False
return True
n = 117
print(solve(n))
输入
117
输出
True