Re: Number-Theory :: All-Digit Perfect Squares
- To: mathgroup at smc.vnet.net
- Subject: [mg64293] Re: [mg64264] Number-Theory :: All-Digit Perfect Squares
- From: "Dr A.H. Harker" <a.harker at ucl.ac.uk>
- Date: Fri, 10 Feb 2006 02:13:30 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
How about
Select[Table[i^2, { i, 11111, 31427}], (Length[#] == 9) && FreeQ[#,
0]&[Union[IntegerDigits[#]]] &]
Tony Harker
Condensed Matter and Materials Physics Group
Department of Physics and Astronomy
University College London
Gower Street
LONDON
WC1E 6BT
(44)(0)207 679 3404
a.harker at ucl.ac.uk
]->-----Original Message-----
]->From: bd satish [mailto:bdsatish at gmail.com]
To: mathgroup at smc.vnet.net
]->Subject: [mg64293] [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],Memb
]->erQ[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.
]->