Number-Theory :: All-Digit Perfect Squares
- To: mathgroup at smc.vnet.net
- Subject: [mg64264] Number-Theory :: All-Digit Perfect Squares
- From: bd satish <bdsatish at gmail.com>
- Date: Wed, 8 Feb 2006 03:54:09 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
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.
- Follow-Ups:
- Re: Number-Theory :: All-Digit Perfect Squares
- From: János <janos.lobb@yale.edu>
- Re: Number-Theory :: All-Digit Perfect Squares