A061906 Obtain m by omitting trailing zeros from n; a(n) = smallest k such that k*m is a palindrome.
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 38, 18, 35, 17, 16, 14, 9, 1, 12, 1, 7, 29, 21, 19, 37, 9, 8, 1, 14, 66, 1, 8, 15, 7, 3, 13, 15, 1, 16, 6, 23, 1, 13, 9, 3, 44, 7, 1, 19, 13, 4, 518, 1, 11, 3, 4, 13, 1, 442, 7, 4, 33, 9, 1, 11, 4, 6, 1, 845, 88, 4, 3, 7, 287, 1, 11, 6, 1, 12345679, 8
Offset: 0
Examples
For n = 30 we have m = 3, 1*m = 3 is a palindrome, so a(30) = 1. For n = m = 12 the smallest palindromic multiple is 21*m = 252, so a(12) = 21.
Links
- Chai Wah Wu, Table of n, a(n) for n = 0..8180
- P. De Geest, Smallest multipliers to make a number palindromic.
Programs
-
ARIBAS
stop := 20000000; for n := 0 to maxarg do k := 1; test := true; while test and k < stop do mp := omit_trailzeros(n)*k; if test := mp <> int_reverse(mp) then inc(k); end; end; if k < stop then write(k," "); else write(-1," "); end; end;
-
Mathematica
skp[n_]:=Module[{m=n/10^IntegerExponent[n,10],k=1},While[!PalindromeQ[k*m],k++];k]; Array[ skp,90,0] (* Harvey P. Dale, Jul 04 2024 *)
-
Python
from _future_ import division def palgen(l, b=10): # generator of palindromes in base b of length <= 2*l if l > 0: yield 0 for x in range(1, l+1): n = b**(x-1) n2 = n*b for y in range(n, n2): k, m = y//b, 0 while k >= b: k, r = divmod(k, b) m = b*m + r yield y*n + b*m + k for y in range(n, n2): k, m = y, 0 while k >= b: k, r = divmod(k, b) m = b*m + r yield y*n2 + b*m + k def A050782(n, l=10): if n % 10: x = palgen(l) next(x) # replace with x.next() in Python 2.x for i in x: q, r = divmod(i, n) if not r: return q else: return 'search limit reached.' else: return 0 def A061906(n, l=10): return A050782(int(str(n).rstrip('0')),l) if n > 0 else 1 # Chai Wah Wu, Dec 30 2014
Comments