算法-颠覆认知,快到离谱
首先先看题目
输入一个正数n,输出所有和为n 连续正数序列。
例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6 和7-8。
我的做法
list01 = []
num = int(input("请输入:"))
for j in range(1, num // 2 + 2):
list01.append(j)
for i in range(j + 1, num // 2 + 2):
list01.append(i)
if sum(list01) == num:
print(f"{list01[0]}-{list01[-1]}")
list01 = [] # 每次循环后让列表为
老师的做法
def find_seq(n):
if n < 3:
return
small = 1
big = 2
middle = n // 2
sum = small + big
while small <= middle:
if sum == n:
print_seq(small, big)
while sum > n:
sum -= small
small += 1
if sum == n:
print_seq(small, big)
big += 1
sum += big
def print_seq(small, big):
print([i for i in range(small, big + 1)])
find_seq(15)