m个1组成的数11..1 %m等于1(这个命题是错误的,没法证明)

julia> map(getg,[3,7,9,11])
4-element Array{Int64,1}:
  4
  7
 10
  3

但也有成立的情况,如m=7,那么m要符合什么条件,上述命题才成立?

由于奇数%2恒等于1,所以m=2,命题成立
m=5,10,命题也成立,但当m是大于10的10的幂时,一定不成立,比如m=100,因为m个1=(m-2)个1*100+11,余数为11。
猜想:当m是不为3的质数时,命题成立

验证100以内的质数

julia> map(x->(x,div(BigInt(10)^x-1,9)%x),primes(2,100))
25-element Array{Tuple{Int32,BigInt},1}:
 (2,1)
 (3,0)
 (5,1)
 (7,1)
 (11,1)
 (13,1)
 (17,1)
 (19,1)
 (23,1)
 (29,1)
 (31,1)
 (37,1)
 (41,1)
 (43,1)
 (47,1)
 (53,1)
 (59,1)
 (61,1)
 (67,1)
 (71,1)
 (73,1)
 (79,1)
 (83,1)
 (89,1)
 (97,1)

而具有%m等于1的1数字串的最小长度,比如37,因为37*3=111,所以1111%37=111*10%37+1=0+1=1。

julia> map(x->(x,getg(x)),primes(7,100))
22-element Array{Tuple{Int32,Int64},1}:
 (7,7)
 (11,3)
 (13,7)
 (17,17)
 (19,19)
 (23,23)
 (29,29)
 (31,16)
 (37,4)
 (41,6)
 (43,22)
 (47,47)
 (53,14)
 (59,59)
 (61,61)
 (67,34)
 (71,36)
 (73,9)
 (79,14)
 (83,42)
 (89,45)
 (97,97)

根据费马定理(《具体数学》4.48)

若n是整数,p是质数,则
np % p == n % p

所以,令n=10

10p % p == 10 % p

两边同减去1

(p个9) % p == 9 % p

9 % p (p个1) % p == 9 % p 1 % p

当9 % p不为0,可以从等式2边约去,得

(p个1) % p == 1 % p =1,证毕。

其实,还有一个简单的抽屉原理的证法,任何整数对m取模的结果不外乎0~m-1的整数,如果现在有m个数(1个1、2个1...m个1) ,它的模一定也在这个范围内,如果这些值各不相同,那么m个1的模必定是0,m+1个1的模必定是1。(好像比命题多1了)

利用上述结论可以证明,分数1/n的循环节长度最大为n-1,因为(n-1)个9能被n整除,整除后的长度小于或等于(n-1)。
若n是偶数,则(n-1)个9*10能被n整除

julia> 1.0/7
0.14285714285714285

julia> 142857*7
999999

julia> 1.0/13
0.07692307692307693

julia> 76923076923*13
999999999999

julia> 1.0/17
0.058823529411764705

julia> BigFloat(1.0)/17
[5.88235294117647]058823529411764705882352941176470588235294117647058823529411765e-02

julia> BigFloat(1.0)/23
[4.347826086956521739130]43478260869565217391304347826086956521739130434782608698e-02

julia> 434782608695652173913*23
9999999999999999999999

julia> 1.0/14
0.07142857142857142

julia> 714285714285*14
9999999999990

julia> 714285*14
9999990