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. ]->