MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

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



  • Prev by Date: Re: Remove Indeterminate elements
  • Next by Date: Re: Re: Strange Syntax problem
  • Previous by thread: Re: Re: Number-Theory :: All-Digit Perfect Squares
  • Next by thread: Poisson equation