login

Year-end appeal: Please make a donation to the OEIS Foundation to support ongoing development and maintenance of the OEIS. We are now in our 61st year, we have over 378,000 sequences, and we’ve reached 11,000 citations (which often say “discovered thanks to the OEIS”).

A061906
Obtain m by omitting trailing zeros from n; a(n) = smallest k such that k*m is a palindrome.
4
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,13
COMMENTS
Every positive integer is a factor of a palindrome, unless it is a multiple of 10 (D. G. Radcliffe, see Links).
Every integer n has a multiple of the form 99...9900...00. To see that n has a multiple that's a palindrome (allowing 0's on the left) with even digits, let 9n divide 99...9900...00; then n divides 22...2200...00. - Dean Hickerson, Jun 29 2001
EXAMPLE
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.
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 *)
PROG
(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;
(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
CROSSREFS
Cf. A050782, A062293, A061915, A061916, A061816. Values of k*m are given in A061906.
Sequence in context: A109211 A224701 A050782 * A139768 A307278 A176071
KEYWORD
base,easy,nonn
AUTHOR
Klaus Brockhaus, Jun 25 2001
STATUS
approved