我正在尝试运行此脚本,它已经运行了2天。仍然没有得到答案。我试了很久而不是int。 我应该做些什么? 使用像这样的大数字更好的方法是什么?
count=int(0)
sum1=int(1)
x=int(343543363925512)
y=int(98325112)
while x!=1:
sum1=sum1+x
if x%2!=0:
x=x*3+1
else:
x=x/4
while y!=1:
if y%2!=0:
y=y*3+1
else:
y=y/4
count=count+1
answer=int(sum1*count)
print answer
非常感谢你。
答案 0 :(得分:3)
据我所知,问题是着名的3n + 1问题,可能是: 当数字x%2 == 0时,你应该除2,而不是4。
count=int(0)
sum1=int(1)
x=int(343543363925512)
y=int(98325112)
while x!=1:
sum1=sum1+x
if x%2!=0:
x=x*3+1
else:
x=x/2
while y!=1:
if y%2!=0:
y=y*3+1
else:
y=y/2
count=count+1
answer=int(sum1*count)
print answer
你的代码运行两天的原因是你的函数进入无限循环。
因为你只在x或y等于1时退出循环,当x = 2,x%2 == 0时,你会做x / 4得到0,x = 0然后永远运行。
根据您的代码,您可以执行
while x > 1:
//do your things here
对于y,它被修改,相同。