Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: count zeros in a number

  • To: mathgroup at smc.vnet.net
  • Subject: [mg121854] Re: count zeros in a number
  • From: DrMajorBob <btreat1 at austin.rr.com>
  • Date: Wed, 5 Oct 2011 04:00:12 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <201110020636.CAA28027@smc.vnet.net> <j6brvm$8om$1@smc.vnet.net>
  • Reply-to: drmajorbob at yahoo.com

There's nothing "esoteric" about IntegerDigits, Replace, or Repeated, as  
in:

x = 24^24*55^55;
Replace[IntegerDigits@x, {__, zeroes : 0 ..} :>
    Length@{zeroes}] // Timing

{0.000185, 55}

If we wanted brute-force arithmetic, we might use Fortran.

Your suggested solutions are NOT greatly hindered by "the slow  
implementation of looping constructs in Mathematica", on the other hand:

(n = 0; While[GCD[x, 10^n] == 10^n, n++]; n - 1) // Timing

{0.000029, 0}

(n = 0; While[Mod[x, 10] == 0, (x = x/10; n++)]; n) // Timing

{0.000018, 0}

Bobby

On Tue, 04 Oct 2011 00:30:21 -0500, Richard Fateman  
<fateman at cs.berkeley.edu> wrote:

> How disappointing that the usual crew did not come up with a way of
> solving this simply, arithmetically, like this:
>
> (n = 0; While[GCD[24^24*55^55, 10^n] == 10^n, n++]; n - 1)
>
> or
>
> (n = 0; x = 24^24*55^55;
>   While[Mod[x, 10] == 0, (x = x/10; n++)  ]; n)
>
> or any of the numerous minor variants....
>
> but instead resorted to conversion to strings or factoring.
>
> The arithmentic methods may be slower since they rely on the slow
> implementation of looping constructs in Mathematica, but they
> don't require any of the more esoteric features like
> Exponents, Split, IntegerDigits, ...
>
> RJF
>


-- 
DrMajorBob at yahoo.com



  • Prev by Date: Re: simplification
  • Next by Date: Re: 3d EPS export files huge on Mac OS X, not so much on PCs
  • Previous by thread: Re: count zeros in a number
  • Next by thread: Re: count zeros in a number