找回密码
 新注册用户
搜索
查看: 6205|回复: 11

自己写的3x+1(Collatz)猜想的程序

[复制链接]
发表于 2010-2-20 21:14:43 | 显示全部楼层 |阅读模式
collatz.zip (20.19 KB, 下载次数: 3155)
解压里面那个exe就是了。请使用cmd运行,否则看不到结果。
还有一个是源代码。这个源代码完全不值得借鉴。本来受wiki那个伪代码影响,用的递归算法,结果发现大数会溢出,懒省事直接改成goto语句了(记得学的时候老师就说,goto千万不要用......)。
直接运行后输入一个数字,然后就会输出3x+1循环到1的步骤。最后输出“STEP:步数”。

32位XP下(mingw32)gcc 3.4.5编译。

理论上支持最大的数字是(10^18000)-1(就是17999个9)。
数字很大的时候,步骤太多,输出速度很慢,可以使用collatz.exe -no,只输出最后的步数。或者用collatz.exe > xx.txt把输出重定向到某一个文件。

如果不知道3x+1、Collatz猜想,参见:http://zh.wikipedia.org/wiki/%E8 ... 9%E7%8C%9C%E6%83%B3

编程水平一般,难免有很多bug(也许很多很多)。如有bug,请及时指正。

评分

参与人数 2基本分 +21 收起 理由
equn + 1
BiscuiT + 20 会蓝屏麽?

查看全部评分

回复

使用道具 举报

头像被屏蔽
发表于 2010-3-2 11:00:09 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
发表于 2010-3-2 11:19:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2010-3-2 13:01:16 | 显示全部楼层
cuihao同学C程度不错 继续努力 长了了来华尔街工作哈
金融精英需要3样:数学、计算机、沟通(英语)等技巧。你有潜力的!
回复

使用道具 举报

发表于 2010-3-2 13:01:55 | 显示全部楼层
Cuihao多去维基做贡献哦!
回复

使用道具 举报

发表于 2010-3-2 14:44:00 | 显示全部楼层
好久不用C了,看着好亲切啊!

改goto的时候就goto。老师吓唬学生的,goto是最基本的命令,几乎和汇编里的一样。
回复

使用道具 举报

发表于 2010-3-2 15:09:46 | 显示全部楼层
反过来的结论也很有意思。

从1开始乘以2或者除以3后的结果,当不能被3整除,则可以选择继续乘以2或者减去1。当可以被3整除则可以选择被三整除或者乘以2。用这样的方法可以得到所有大于1的自然数。

不知道我是不是把自己说糊涂了。
回复

使用道具 举报

发表于 2010-3-2 19:59:42 | 显示全部楼层
用CUDA和Stream编写,让显卡也玩玩这个程序吧。
回复

使用道具 举报

 楼主| 发表于 2010-3-2 21:25:15 | 显示全部楼层
回复 5# equn


    上学期间争取保持每周贡献一次
回复

使用道具 举报

 楼主| 发表于 2010-3-2 21:26:08 | 显示全部楼层
回复 7# (Y)


    确实有意思。这属于。。。考拉兹反猜想。
回复

使用道具 举报

 楼主| 发表于 2010-3-2 21:27:27 | 显示全部楼层
回复 8# cicikml


    CUDA的材料大致看了一下,基本不知道怎么弄collatz(还是要继续学习)。
回复

使用道具 举报

发表于 2010-3-3 09:25:52 | 显示全部楼层
我学C语言的时候老师说到“goto”语句就直接一句:“这段你们自己看看好了,记得以后在编程时候别用goto”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 新注册用户

本版积分规则

论坛官方淘宝店开业啦~
欢迎大家多多支持基金会~

Archiver|手机版|小黑屋|中国分布式计算总站 ( 沪ICP备05042587号 )

GMT+8, 2025-4-21 15:37

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表