Re: Re: Number-Theory :: All-Digit Perfect Squares

• To: mathgroup at smc.vnet.net
• Subject: [mg64285] Re: Re: [mg64264] Number-Theory :: All-Digit Perfect Squares
• From: Bob Hanlon <hanlonr at cox.net>
• Date: Thu, 9 Feb 2006 02:45:00 -0500 (EST)
• Sender: owner-wri-mathgroup at wolfram.com

```Here is a much faster selection test (Union vice multiple MemberQ):

test[x_]:=And@@(MemberQ[IntegerDigits[x],#]&/@Range[9]);

Timing[sel1=Select[Range[11111,31427]^2,test[#]&];]

{5.90577 Second,Null}

Timing[sel2=Select[Range[11111,31427]^2,Union[IntegerDigits[#]]==Range
[9]&];]

{0.671642 Second,Null}

sel1==sel2

True

Bob Hanlon

>
> From: Bob Hanlon <hanlonr at cox.net>
To: mathgroup at smc.vnet.net
> Subject: [mg64285] Re: [mg64264] Number-Theory :: All-Digit Perfect Squares
>
> test[x_]:=And@@(MemberQ[IntegerDigits[x],#]&/@Range[9]);
>
> Select[Range[11111,31427]^2,test[#]&]
>
>
> Bob Hanlon
>
> >
> > From: bd satish <bdsatish at gmail.com>
To: mathgroup at smc.vnet.net
> > Subject: [mg64285] [mg64264] Number-Theory :: All-Digit Perfect Squares
> >
> >         Hi buddies,
> >
> >
> >                          I set out to write a code that generates nine-digit
> > perfect square numbers , with each of the digits 1,2,3,...9 occuring only
> once
> > in a given number. An example is 139854276  = 11826^2 . Obviuously ,
> all
> > such numbers must lie in the interval [123456789 , 987654321] . Since
> > 11111^2 < 123456789 and 31427^2 > 987654321 ,  all the square
> numbers must
> > have their square-roots
> > in the interval (11111,31427) .
> >
> >               I need suggetions from you guys to help me improve the code
or
> > to make it better or
> >  shorter.
> >
> >                            The logic I used is this:
> >
> >  (a).  Generate all the squares of integers in the range [11111,31427]
> >
> >  (b).  Seperate the numbers into digits (using the command IntegerDigits[
]
> > )
> >
> >  (c).  Check , how many (or which and all)  numbers in this list  have each
> > of the digits 1,2,3,...8,9 exactly once.
> >
> >  (d).  Collect all those lists and put them back as numbers (using the
> > command FromDigits[ ] )
> >
> >
> >            Here is the actual code:
> >
> >  squares = IntegerDigits[Table[i ^ 2 , { i,11111,31427}]];
> >  sel = { } ; (* empty-list*)
> >  Do[
> >        p = squares[[k]];
> >        logic =
> > And[MemberQ[p,1],MemberQ[p,2],MemberQ[p,3],MemberQ[p,
4],MemberQ
> [p,5],MemberQ[p,6],
> >                    MemberQ[p,7],MemberQ[p,8],MemberQ[p,9] ] ;
> >
> >        If[TrueQ[logic] , sel = Append[sel,p]] ,
> >        {k,1,Length[squares]}
> >     ];
> >  Map[FromDigits,sel,{1}]
> >
> >  The code does work perfectly, giving a list of 30 such  numbers.
> >
> >  Will anyone help to to improve the code , if possible ?
> >
> >  I would like to get rid of MemberQ[..] repeated so often.
> >
> >
> >
>

```

• Prev by Date: Re: Remove Indeterminate elements
• Next by Date: Re: Re: MathGL3d and Mathematica 5.3
• Previous by thread: Re: Number-Theory :: All-Digit Perfect Squares
• Next by thread: Re: Number-Theory :: All-Digit Perfect Squares