cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

Previous Showing 11-12 of 12 results.

A093017 Luhn algorithm double-and-add sum of digits of n.

Original entry on oeis.org

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 7, 8, 9, 10, 11, 12, 13
Offset: 0

Views

Author

Ray Chandler, Apr 03 2004

Keywords

Comments

Starting on the right, sum digits after doubling alternating digits beginning with the second. If doubled digit >9, reduce by 9 (sum of digits).
a(n) = A007953(A249873(n)); A093019(n) = 10 - a(10*n) mod 10 if less than 10, otherwise 0. - Reinhard Zumkeller, Nov 08 2014
First differences are b(n) defined for n>0 as follows. Take the prime factorization of n and let x be the number of 2's, y be the number of 5's, and z be min(x,y). If z is even, b(n) = 1 - 9*z. If z is odd and y=z, b(n) = 2 - 9*z. If z is odd and y>z, b(n) = -7 - 9*z. Now a(n) = a(n-1) + b(n). - Mathew Englander, Aug 04 2021

Examples

			a(18) = 2*1 + 8 = 10.
a(59) = (1+0) + 9 = 10 (1 and 0 are the digits in 10 = 2*5).
		

Crossrefs

Programs

  • Haskell
    a093017 n = if n == 0 then 0 else a093017 n' + a007953 (2 * t) + d
                where (n', td) = divMod n 100; (t, d) = divMod td 10
    -- Reinhard Zumkeller, Nov 08 2014
    
  • Python
    def a(n):
        s = str(n)
        r = s[::-1]
        x = sum(int(d) for d in r[::2])
        x += sum(q if (q:=2*int(d)) < 10 else q-9 for d in r[1::2])
        return x
    print([a(n) for n in range(87)]) # Michael S. Branicky, Jul 23 2024

Formula

a(0)=0; for n not divisible by 10, a(n)=1+a(n-1); for n divisible by 10 but not 50, a(n)=2+a(n-10); for n divisible by 50 but not 100, a(n)=1+a(n-50); for n divisible by 100, a(n)=a(n/100). - Mathew Englander, Aug 04 2021

A093018 Natural numbers with appended Luhn mod 10 check digit.

Original entry on oeis.org

0, 18, 26, 34, 42, 59, 67, 75, 83, 91, 109, 117, 125, 133, 141, 158, 166, 174, 182, 190, 208, 216, 224, 232, 240, 257, 265, 273, 281, 299, 307, 315, 323, 331, 349, 356, 364, 372, 380, 398, 406, 414, 422, 430, 448, 455, 463, 471, 489, 497, 505, 513, 521, 539
Offset: 0

Views

Author

Ray Chandler, Apr 03 2004

Keywords

Comments

Indices of terms in A093017 == 0 mod 10.
A249832(a(n)) = 1; A093017(a(n)) mod 10 = 0; a(n) = 10*n + A093019(n); A093019(n) = a(n) mod 10. - Reinhard Zumkeller, Nov 08 2014
The sequence includes all Canadian Social Insurance Numbers, as well as all modern credit and debit card numbers. - Mathew Englander, Aug 04 2021

Examples

			18 is in the sequence because A093017(18)=10 == 0 mod 10.
59 is in the sequence because A093017(59)=10 == 0 mod 10.
		

Crossrefs

Programs

  • Haskell
    a093018 n = a093018_list !! n
    a093018_list = filter ((== 1) . a249832) [0..]
    -- Reinhard Zumkeller, Nov 08 2014
    
  • Python
    def a(n):
        s = str(n)
        r = s[::-1]
        x = sum(int(d) for d in r[1::2])
        x += sum(q if (q:=2*int(d)) < 10 else q-9 for d in r[::2])
        x = x%10
        c = str((10 - x) if x > 0 else 0)
        return int(s+c)
    print([a(n) for n in range(54)]) # Michael S. Branicky, Jul 23 2024

Extensions

Original name end comment interchanged by Reinhard Zumkeller, Nov 08 2014
Previous Showing 11-12 of 12 results.