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.

A051802 Nonzero multiplicative digital root of n.

Original entry on oeis.org

1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 2, 4, 6, 8, 1, 2, 4, 6, 8, 3, 3, 6, 9, 2, 5, 8, 2, 8, 4, 4, 4, 8, 2, 6, 2, 8, 6, 6, 8, 5, 5, 1, 5, 2, 1, 3, 5, 4, 2, 6, 6, 2, 8, 8, 3, 8, 8, 6, 2, 7, 7, 4, 2, 6, 5, 8, 8, 3, 8, 8, 8, 6, 8, 6, 4, 6
Offset: 0

Views

Author

Dan Hoey, Dec 09 1999

Keywords

Comments

Occasionally defined with a(0) = 0.

References

  • Discussed Jun 15 1991 on sci.math by Mayne, Rusin, Landrum et al.

Crossrefs

Uses A051801.
Cf. A007954.

Programs

  • Haskell
    a051802 = until (< 10) a051801  -- Reinhard Zumkeller, Nov 23 2011
    
  • Maple
    A051801 := proc(n) local d,j: d:=convert(n,base,10): return mul(`if`(d[j]=0,1,d[j]), j=1..nops(d)): end: A051802 := proc(n) local m: if(n=0)then return 1:fi: m:=n: while(length(m)>1)do m:=A051801(m): od: return m: end: seq(A051802(n),n=0..100); # Nathaniel Johnston, May 04 2011
  • Mathematica
    mdr0[n_] := NestWhile[Times @@ (IntegerDigits@# /. 0 -> 1) &, n, UnsameQ, All]; Table[ mdr0@n, {n, 0, 104}] (* Robert G. Wilson v, Aug 04 2006 *)
  • PARI
    A051801(n)=my(v=select(k->k>1,digits(n)));prod(i=1,#v,v[i])
    a(n)=while(n>9,n=A051801(n)); n \\ Charles R Greathouse IV, Nov 20 2012
    
  • Python
    from operator import mul
    from functools import reduce
    def A051802(n):
        if n == 0:
            return 1
        while n > 9:
            n = reduce(mul, (int(d) for d in str(n) if d != '0'))
        return n
    # Chai Wah Wu, Aug 23 2014
    
  • Scala
    def zeroLessIterDigitProd(n: Int): Int = n.toString.length match {
      case 1 => n
      case  => zeroLessIterDigitProd(n.toString.replace("0", "").toCharArray.map( - 48).scanRight(1)( * ).head)
    } // Note that zeroLessIterDigitProd(0) gives 0, not 1
    List(1) ++: (1 to 99).map(zeroLessIterDigitProd) // Alonso del Arte, Apr 19 2020

Formula

If n == A051801(n) then n else a(A051801(n)).

Extensions

More terms from Robert G. Wilson v, Aug 04 2006