antimony 发表于 2016-7-1 13:12:31

求助!醒目!编程遇到了瓶颈,请帮忙看看怎么找循环节!

是这样的,a/b

antimony 发表于 2016-7-1 13:18:39

a/b可以得到无限循环小数,比如1/243=0.00411522633744855......
我想编程在这个字符串中找到循环节


之前试过的方法如下:
For i,1,dim(s)
For j,i+1,dim(s)
IF mid(s,i,5)=mid(s,j,5)
   mid(s,i,j-1)->xunhuanjie
EndFor
EndFor

但这种算法更本应对不了短循环节:
如 0.333333......循环节判断为“33333”

还有可能遇到碰巧相同的情况:
如混循环小数

antimony 发表于 2016-7-1 13:19:17

不知道坛友有什么好方法没有

超越说 发表于 2016-7-1 16:36:05

本帖最后由 超越说 于 2016-7-1 16:42 编辑

小数精度有限。。。
如果不需要处理字符串的话,建议直接用数学方法解决。。。下面这个只能做纯循环。
Define test(number)=
Func
Local m,n
m:=0.1
n:=9
While mod(m,1)≠0
    m:=number*n
    n:=n*10+9
EndWhile
Return m
EndFunc

antimony 发表于 2016-7-6 15:43:14

超越说 发表于 2016-7-1 16:36
小数精度有限。。。
如果不需要处理字符串的话,建议直接用数学方法解决。。。下面这个只能做纯循环。

谢谢,不过我希望模拟一下真实的小学生的计算。

dousha99 发表于 2016-7-8 20:08:55

要找循环节需要先写无限精度小数计算...用 basic 就有点捉鸡了

请参考此段代码 http://pastebin.ubuntu.com/18781200/

可以直接把结果存入字符串,然后再搜索,不过目测会很占内存
页: [1]
查看完整版本: 求助!醒目!编程遇到了瓶颈,请帮忙看看怎么找循环节!