作者utility (哟)
站内Prob_Solve
标题Re: [问题] 从二进位判断数字是否被5整除
时间Sat Oct 4 13:28:28 2008
※ 引述《neverfly (neverfly)》之铭言:
: 我想要建一个automata,可以输入二进位的值,
: 如果该值能被5整除就接受。
: 但是我想了很久,实在想不出来二进位下,能被5整除的数有什麽特性。
: 列了前几个出来
: 101 1010 1111 10100 11001 11110 100011 101000
: 101101 110010 110111 111100 1000001 1000110 1001011 1010000
: 1010101 1011010 1011111 1100100 ……
: 只发现了有每八个,末三码会重覆这个特性,
: 不过似乎还是不能直接检查出来一串二进位的值是否被5整除。
: 请问有人能解决这个问题吗?
1.把数字右移两位 - 原数字後面两位....
(如果这个结果是5的倍数..则代表原数字是五的倍数.)
2.当然你为了要检查(1)的结果是不是5的倍数...还要再回(1)再做一次检查
(直到後面的两位数字大於被右两位的数字值)..
例如:10100 => 101-00=101=>1-01=0=>5的倍数
1011111=>10111-11=10100=>101-00=101=>1-01=0=>5的倍数
弄一个不是的来看看好了
1000111=>10001-11=1110=>11-10=1=>0-1 < 0 =>所以不是5的倍数
ps:刚才临时想到的....大家看看有没有问题..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.105.209
1F:→ utility:Pash77的方法最好... 10/04 13:47