【发布时间】:2020-03-17 22:55:24
【问题描述】:
如果您导入一个大于或等于 0 的数字 (g),那么您应该能够将其写为: g = (2^m)*r ,(m > 0 并且 r 必须是奇数)。 我尝试了不同的方法并在网上搜索,但可以找到答案。 这是一个与 while/for 循环相关的问题,因为它与我研究中的那一章有关。
这是我迄今为止尝试过的事情之一:
g = int(input(' '))
m = 0
r = 1
while m >= 0:
m += 1
if g == (2**m)*r:
break
else:
r+=2
print(m)
print(r)
但我总是陷入无限循环......
如果有人能帮助我,我将不胜感激
【问题讨论】:
-
因为你在同时增加
g和r。 -
听起来像是一道数学题。假设
r是偶数,那么你可以写r=2r'和g = (2**(m+1))r'。事实上,这个等式涵盖了所有整数>1。 -
因此,接近它:采取
g,只要它是偶数,就采取g' = d/2; m+=1。现在你只剩下奇怪的g'''' == r,你就完成了。 -
我认为它属于math.stackexchange
标签: python for-loop math while-loop iteration