A335502 Triangle read by rows, 0 <= k < n, n >= 1: T(n,k) is the eventual period of the sequence x(j) (or 0 if x(j) never enters a cycle) defined as follows: x(0) = 1 and for j > 1 x(j) is obtained from 2*x(j-1) by deleting all occurrences of the digit k in base n.
0, 1, 1, 4, 1, 1, 2, 1, 1, 0, 4, 1, 1, 3, 1, 12, 2, 1, 6, 1, 4, 78, 1, 1, 6, 1, 3, 6, 3, 1, 1, 0, 1, 0, 0, 0, 6, 1, 1, 18, 1, 4, 36, 4, 1, 36, 4, 1, 4, 1, 8, 4, 72, 1, 540, 100, 1, 1, 16, 1, 4, 17, 0, 1, 8, 4, 90, 2, 1, 12, 1, 4, 14, 6, 1, 4, 4, 240
Offset: 1
Examples
Triangle begins: n\k 0 1 2 3 4 5 6 7 8 9 10 11 --------------------------------------------------- 1: 0 2: 1 1 3: 4 1 1 4: 2 1 1 0 5: 4 1 1 3 1 6: 12 2 1 6 1 4 7: 78 1 1 6 1 3 6 8: 3 1 1 0 1 0 0 0 9: 6 1 1 18 1 4 36 4 1 10: 36 4 1 4 1 8 4 72 1 540 11: 100 1 1 16 1 4 17 0 1 8 4 12: 90 2 1 12 1 4 14 6 1 4 4 240 For n = 10 and k = 5, the x-sequence starts 1, 2, 4, 8, 16, 32, 64, 128, 26, 2, and then repeats with a period of 8, so T(10,5) = 8. T(10,0) = 36, because A242350 eventually enters a cycle of length 36. For n=11 and k=7, the x-sequence starts (in base 11) 1, 2, 4, 8, 15, 2A, 59, 10. Disregarding trailing zeros, the sequence then repeats with period 7 and x(i+7*j) = x(i)*11^j for positive i and j. The x-sequence itself is therefore not eventually periodic, so T(11,7)=0.
Links
- Pontus von Brömssen, Rows n = 1..48, flattened
Programs
-
Python
from sympy.ntheory.factor_ import digits from functools import reduce def drop(x,n,k): # Drop all digits k from x in base n. return reduce(lambda x,j:n*x+j if j!=k else x,digits(x, n)[1:],0) def cycle_length(n,k,m): # Brent's algorithm for finding cycle length. # Note: The function may hang if the sequence never enters a cycle. if (m,n,k)==(5,10,7): return 0 # A little cheating; see A335506. p=1 length=0 tortoise=hare=1 nz=0 while True: hare=drop(m*hare,n,k) while hare and hare%n==0: hare//=n nz+=1 # Keep track of the number of trailing zeros. length+=1 if tortoise==hare: break if p==length: tortoise=hare nz=0 p*=2 length=0 return length if not nz else 0 def A335502(n,k): return cycle_length(n,k,2) if n>1 else 0
Comments