Re: Re:NestWhile
- To: mathgroup at smc.vnet.net
- Subject: [mg23656] Re: Re:NestWhile
- From: "Paul R. Wellin" <wellin at wolfram.com>
- Date: Sun, 28 May 2000 23:09:07 -0400 (EDT)
- References: <8eg6sc$hd7@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Although slightly tangential to the initial thread here, I thought those who
are interested in Keith numbers/sequences may like to search for them. Some
time ago, I wrote a short program to do this. The first function KeithQ
determines whether a number n is a Keith number in base b (base 10 by
default, but it is interesting to look in other bases). The second simple
function SearchKeith picks out all Keith numbers in a specified range.
KeithQ[n_, b_:10] := Module[{t = IntegerDigits[n, b]},
While[Last[t] < n, t = Rest[Append[t, Plus @@ t]]];
Last[t] == n]
SearchKeith[a_, b_] := Select[Range[a, b], KeithQ]
Here are all the Keith numbers between 100 and 2000:
In[3]:= SearchKeith[100, 2000] // Timing
Out[3]= {2.58 Second, {197, 742, 1104, 1537}}
Using the function below, you can check 742 for example:
In[4]:= V3KeithSequence[742]
Out[4]= {7, 4, 2, 13, 19, 34, 66, 119, 219, 404, 742}
Paul Wellin
Wolfram Research, Inc.
wellin at wolfram.com
"Alan W.Hopper" <awhopper at hermes.net.au> wrote in message
news:8eg6sc$hd7 at smc.vnet.net...
>
> Dear mathgroup ,
>
>
> Concerning my query before Easter, about a version 3 equivalent to
> NestWhile.
>
> Thanks to Hartmut Wolf, Daniel Reeves, Andrzej Kozlowski, and
> Jens-Peer Kuska
> for their solutions.
>
> And I received an e-mail from Eric Bynum of Wolfram Technical Support,
> with code
> which appropriately utilizes both Nest and While. Thanks also, Eric.
>
>
> Here is Eric's Mathematica 3 Keith Sequence solution ;
>
>
> In[1]:=
> V3KeithSequence[n_Integer?Positive] :=
> Module[{d = IntegerDigits[n], l, counter, lis},
> l = Length[d];
> counter = 1;
> While[Nest[Append[#, Plus @@ Take[#, -l]] &, d, counter][[-1]] <
> n,
> counter++;
> lis = Nest[Append[#, Plus @@ Take[#, -l]] &, d, counter]];
> lis
> ]
>
> In[5]:=
> V3KeithSequence[197]
>
> Out[5]=
> {1, 9, 7, 17, 33, 57, 107, 197}
>
>
> Where as before, 1+9+7=17, 9+7+17=33, etc., ending again with 197.
>
>
>
>
> Alan Hopper
>
> awhopper at hermes.net.au
>
>
>