一组数字的循环输出

来源:互联网 发布:fastjson解析复杂json 编辑:程序博客网 时间:2024/04/28 03:50


 

  一组数字的循环输出

1010110101……或着是0010100101……

都是五个一循环,五个一循环。他们之间好像存在某种联系,但又不是那么明显,即使使用奇偶性调控也无法实现。

对与1010110101……这组数字的公式表达是:

                      

f=[3*(n+4)/5]-[3*(n+3)/5]

n f

1 1

2 0

3 1

4 0

5 1

6 1

7 0

8 1

9 0

10 1

11 1


对于0010100101……这组数组的公式表达是:

f=[2*(n+5)/5]-[2*(n+4)/5]

n f

1 0

2 0

3 1

4 0

5 1

6 0

7 0

8 1

9 0

10 1

11 0


有什么发现吗?表达式的通式为f=[p*(n+a)/q]-[p*(n+b)/q],这里的[]是取整的意思,在数学中称之为高斯函数

由于数组的循环是以五个出现的,而q就是5。但这是为什么呢?是不是当数组以6个循环,q就等于6呢?

答案是正确,以几个数字循环,q就等于几!那p又有什么用呢?pq的组合可以说是关键。

n+a,n+b为未知数,

x5*kh(x,k,h皆为整数)----------5就是q

很显然,x5h01234.

这五个值分别乘以同一个纯小数y,将产生不同的值g,而由于y的大小问题,将使得结果在某些值上进位

        0                                 

        1

y*h  2     g

        3

        4

例如:y=0.6h5的余数01234

               G=0.6*x                               [G]                                   [Gn+1]-[Gn]=t

               g10.6*00                    g1=0                        

               g20.6*10.6                 g2=0                          g2-g1=0     

               g3 0.6*21.2(进位)      g3=1                          g3-g2=1     

               g4 0.6*31.8              g4=1                          g4-g3=0     

               g5 0.6*42.4(进位)    g5=2                          g5-g4=1     

               g6 0.6*53.0(进位)    g6=3                          g6-g5=1     

              g7  0.6*63.6              g7=3                          g7-g6=0     

               g8 0.6*74.2 (进位)    g8=4                          g8-g7=1     

               g9  0.6*84.8              g9=4                          g9-g8=0     

               g10  0.6*95.4(进位)  g10=5                        g10-g9=1     

               g11  0.6*106.0 (进位)g11=6                      g11-g10=1  

规律出来了对吧!其实 G=0.6*x0.6*( 5*kh )=3k0.6*h  其规律就来源于0.6*h的进位效果 

现在我们来解析一下公式:f=[p*(n+a)/q]-[p*(n+b)/q]

n+an+b就是xab的作用是起调控作用,以控数组首项处在你想要的循环位置上),p/q0.6,所以ab起调控作用需要具体加减,关键是要找到这个小数,以实现进位的效果,q很容易找到,就是有几个数字循环,q就等于几。

p呢?我们在看看序列

 对与1010110101……这组数字的公式表达是:

                          f=[3*(n+4)/5]-[3*(n+3)/5]

 对于0010100101……这组数组的公式表达是:

                          f=[2*(n+5)/5]-[2*(n+4)/5]

在数组中,数组元素的和好像就是q,哈哈!或许你还不清楚q为何会等于数组元素和的原因,由于你要进位,你进了多少为当然就产生多少1喽,于是q便等于和喽

例如:10101这个循环,你必然要进位3次,经历1-02-13-2这三个阶段对吧?

q0.6*h是对应的,h便是p的几个余数,即0.6pq


或许看了这么久,你觉得该数组的循环输出作用不大?

0011233445……你能表达吗?其实不就在上面吗?用一个取整函数做到了,

甚至一些不是以01这样进位的也可以做到,只需在[p*(n+a)/q]前面加个z[p*(n+a)/q]便可以了,具体的应用就要靠你去挖掘了,在计算某一天是星期几的蔡勒公式就用到了该方法(http://download.csdn.net/detail/zhouyumengdie/9553975)文档已经上传有兴趣的同学可以看看,附件里面也有


表达式的通式为f=z[p*(n+a)/q]-[p*(n+b)/q]

      拓展           [r*(n+c)/s][p*(n+a)/q]-[p*(n+b)/q]


















0 0