上节课我们用到了//和%两个运算符,大家一定还记得他们的作用。留的练习题“角谷猜想”相信你们也一定做出来了。下面我把我的做法和大家分享一下,看看你们的做法和我的有没有区别。如果有区别,又能够解决问题,你就厉害了!
每一个问题的程序实现方法都可能有很多种,这里面体现了编程习惯、思维习惯、算法效率等问题,可能你的比我的还要好。
#coding=cp936
#角谷猜想
n=int(input("请输入一个大于1的正整数"))
i=0
while n!=1:
if n%2==0:
n=n/2
else:
n=n*3+1
i+=1
print("需要经过",i,"次")
input()
编这个程序时我又做了一个拓展,想看看某一个范围的数的整体情况,于是写了这个程序,结果发现好像迭代次数杂乱无章,相邻的两个数很可能相差上百次,挺有意思的,你也去试试吧。
#coding=cp936
#万以内数角谷猜想验证版
begin=eval(input("起始值是:"))
end=eval(input("终止值是:"))
for n in range(begin,end):
i=0
a=n
while n!=1:
if n%2==0:
n=n/2
else:
n=n*3+1
i+=1
print(a,"需要经过",i-1,"次迭代")
input()
领取专属 10元无门槛券
私享最新 技术干货