用python验证冰雹猜想_用Pythony验证万物归一(考拉咨猜想)

世界上存在一种这样的猜想,无论你给我什么,如何待我,我会慢慢把它捶打磨练,最后达到天人合一.额,其实是我瞎编的啦.其实世界上有一种跟我瞎编的东西很像,那么就是考拉咨猜想:你随便给我一个整数,我最后都是会通过固定的规则演变成"1",万物归一.

那么这个规则是什么呢?

我拿到一个数number:

奇数则number= 3 * number + 1;

偶数则number= number // 2;

猜想:对于每一个正整数,如此循环,最终都能够得到1。

那么我们就用Python验证一下这个猜想

#!/usr/bin/env python3

# coding=utf-8

__author__ = "RidingRoad"

START_NUMBER = 1

END_NUMBER = 1000001

def collatz_seq(number):

"""

获取到的number是奇数,则number= 3 * number + 1;

偶数则number= number // 2;

如果考拉咨猜想真的成立,可以number=1,那么程序将会停止,否则,考拉咨猜想不成立

:return:1

"""

while True:

if number == 1:

return number

else:

# number为偶数

if not number % 2:

number = number // 2

else:

# number为奇数

number = 3 * number + 1

if __name__ == "__main__":

# 存放验证考拉咨猜想函数的结果

result = []

for i in range(START_NUMBER, END_NUMBER):

# 验证START_NUMBER, END_NUMBER之间的数

result.append(collatz_seq(i))

# 显示结果

print(result)

下面是1到1000,000的数字进行考拉咨猜想验证的结果

[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,......]

可以看到:万里挑一啊, so easy

古人的猜想,如果还是基于传统的计算工具,那是多么的无聊单调,我们可以用Python来瞬间完成,感谢龟叔哦.

这里我们就不自己肉眼判断了,我们用filter

def verify(num):

"""判断结果里的不是1的数"""

return 1 != num

if __name__ == "__main__":

# 存放验证考拉咨猜想函数的结果

result = []

for i in range(START_NUMBER, END_NUMBER):

# 验证START_NUMBER, END_NUMBER之间的数

result.append(collatz_seq(i))

# 使用filter对结果进行判断是否存在非1的数

print(list(filter(verify,result)))

"""

filter(function or None, iterable) --> filter object

Return an iterator yielding those items of iterable for which function(item)

is true. If function is None, return the items that are true.

"""

结果

输出了一个[]空列表,说明result列表里全部为一,考拉咨猜想是可能正确的.为什么说可能,是因为我只验证了1到1000000的数字.

[]

我的个性签名:Focusing on the Python and firmly convincing that nothing can replace hard work.需要完整的代码关注我的公众号Python孙行者,聊天界面回复"万物归一",即可获取.欢迎大家关注我的公众号.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值