标题: [练习]批处理实现角谷猜想 [打印本页]
作者: qq641255849 时间: 2008-9-14 15:23 标题: [练习]批处理实现角谷猜想
日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。
猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。
用批实现验证吗?(附上演算过程)
作者: pusofalse 时间: 2008-9-14 15:45
任意一个奇数 n*3+1后都必将是个偶数。
好像只需求证出这一步就可以了。
作者: pusofalse 时间: 2008-9-14 16:02
- @echo off&setlocal enabledelayedexpansion
- set/p num=Input a numeric:
- :loop
- set/a mod=num%%2,x+=1
- if %mod% equ 1 (
- set "var=!num! * 3 + 1"
- set/a num=num*3+1
- set "var=!var! = !num!"
- ) else (
- set "var=!num! / 2"
- set/a num/=2
- set "var=!var! = !num!"
- )
- echo %x%: !var!
- if %num% neq 1 goto loop
- pause
复制代码
[ 本帖最后由 pusofalse 于 2008-9-15 19:39 编辑 ]
作者: qq641255849 时间: 2008-9-14 16:51
原帖由 pusofalse 于 2008-9-14 16:02 发表
@echo off&setlocal enabledelayedexpansion
set/p num=Input a numeric:
:loop
set/a mod=num%%2,x+=1
if %mod% equ 1 (
set "_%x%=!num! * 3 + 1"
set/a num=num*3+1
set "_%x%=!_%x%! = !num ...
版主的不错哦
和我的思路一样...
作者: wxcute 时间: 2008-9-14 22:17
- @echo off
- :eo
- cls
- set/p n=输入大于1的数字:
- echo %n%
- :xs
- if %n%==1 pause&goto :eo
- set/a m=%n%%%2
- if %m%==1 (call :xx n %n% "*3+1") else (call :xx n %n% "/2")
- goto xs
- :xx
- set/a %1=%2%~3
- echo %2%~3=%n%
复制代码
作者: slore 时间: 2008-9-14 23:43
没人用&运算?比%快嗬
作者: pusofalse 时间: 2008-9-14 23:51 标题: 回复 6楼 的帖子
高,按位相与。。。
作者: qq641255849 时间: 2008-9-15 09:50
原帖由 slore 于 2008-9-14 23:43 发表
没人用&运算?比%快嗬
slore讲解下吧...
作者: qq641255849 时间: 2008-9-15 18:16
我的答案- @echo off
-
- setlocal enabledelayedexpansion
- :1
- set num=%random%%random%%random%
- :a
- set num1=%num%
- if %num% equ 1 (echo OK!&pause&goto :1)
- set /a v=%num%%%2
- if %v% equ 0 (set /a num=%num%/2&echo %num1%/2=!num!) else (set /a num=%num%*3+1&echo %
-
- num1%*3+1=!num!)
- pause>nul&goto :a
复制代码
作者: pusofalse 时间: 2008-9-15 18:40 标题: 回复 9楼 的帖子
按位相与可以理解为对应位上有0则0,“与”大概就是乘的意思。
set/a n=1000"&"64
(deci) 1000 ----> (bin) 1111101000
(deci) 64 ----> (bin) 0001000000
---------------------------------------
1111101000
(&) 0001000000
-------------------------
0001000000
(bin) 0001000000 -----> (deci) 64
所以n的值是64.
[ 本帖最后由 pusofalse 于 2008-9-15 18:42 编辑 ]
作者: qq641255849 时间: 2008-9-15 20:56
没看懂...
(deci) 1000 ----> (bin) 1111101000
(deci) 64 ----> (bin) 0001000000
这里是什么意思?
转为二进制?
[ 本帖最后由 qq641255849 于 2008-9-15 20:59 编辑 ]
作者: pusofalse 时间: 2008-9-15 20:59
deci(mal)十进制 bin(ary)二进制
10进制数1000,转为2进制就是1111101000
作者: 523066680 时间: 2008-9-20 16:45 标题: 回复 6楼 的帖子
哈 不是大家都会滴 比如我就不会……呜呜
作者: Batcher 时间: 2008-9-20 17:39 标题: 回复 13楼 的帖子
多学习就会了
批处理位运算
http://bbs.bathome.net/thread-1844-1-1.html
作者: yzstwz 时间: 2010-8-3 18:42
请教版主
批处理数据达到多大会产生错误?
谢谢!
我用VB做过角谷猜想 设为Decimal 数据类型 最大输入数或中间运算结果都不能大于 79,228,162,514,264,337,593,543,950,335
否则 数据溢出错误
目前,网上公布的 角谷猜想的最大验证数 好像已达到 January 18 2009: 20·2^58 reached.
不知他用的什么机器和方法?
[ 本帖最后由 yzstwz 于 2010-8-3 18:51 编辑 ]
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |