例如:
1 + 2 +3 = 6
4 + 5 = 9
- 如果该数字可以表示为连续数字的和,则返回
True
,否则返回False
。
def check_consecutive_sum(n):
if n % 2 == 1:
return True
if n & (n - 1) == 0:
return False
return True
n = int(input())
print(check_consecutive_sum)
如果是奇数,肯定满足条件
如果输入的数值n为偶数用等差数列求和公式,求出(2x+k)(k+1)/2 == n
若k+1为偶数,则2x+k为奇数,若k+1为奇数,则2x+k为偶数,所以必定有一奇数和一个偶数。 我们把公式转换成(2x+k)(k+1) == 2n,因为2n是偶数,左边(2x+k)(k+1)一定有一个数值为偶数。 等式两边不断提取因数2,如果2n可以不断提取因数2化成2^m,也就是2的幂,而等式的左边因为存在一个奇数,(2x+k)(k+1)是不能化成2^m。所以式子两边不可能相等。所以2的幂是不能转换成连续自然数相加的形式。
判定n是否为2的幂即可