a和b的最大公约数(GCD)是将两者分开而没有余数的最大数.
找到两个数字的GCD的一种方法是Euclid算法,该算法基于以下观察结果:if 是除以之后r的余数.作为基础案例,我们可以使用.abgcd(a, b) = gcd(b, r)gcd(a, 0) = a
写一个函数调用GCD是需要的参数a和b返回他们的最大公约数.
这是最好的方法,我发现:
x = int(raw_input("Enter an integer: "))
for ans in range(0, abs(x) + 1):
if ans ** 3 == abs(x):
break
if ans ** 3 != abs(x):
print x, 'is not a perfect cube!'
else:
if x < 0:
ans = -ans
print 'Cube root of ' + str(x) + ' is ' + str(ans)
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法,最好是避免不得不迭代候选值?
我想写一个函数,它接受一个数字列表并返回累积和; 也就是说,一个新的列表,其中第i个元素是原始列表中第一个i + 1个元素的总和.例如,[1,2,3]的累积和是[1,3,6].
到目前为止,这是我的代码:
def count(list1):
x = 0
total = 0
while x < len(list1):
if x == 0:
total = list1[0]
print total
x = x +1
else:
total = list1[x] + list1[x -1]
print total
x = x + 1
return total
print count([1, 2, 3, 4, 7])
Run Code Online (Sandbox Code Playgroud)
然而,它不起作用.
你能告诉我我做错了什么吗?我现在已经有很长一段时间了.
非常感谢!
卢克