Re: Reciprocal Sums
- To: mathgroup at smc.vnet.net
- Subject: [mg32480] Re: Reciprocal Sums
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Wed, 23 Jan 2002 00:59:55 -0500 (EST)
- References: <a2j8u1$7a6$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Juan, I guess it depends on how big n might be, whether the following is reliable or not. It may be possible up to quite big n to guarantee that we get all possibilities and possibly some more; and then use your method on the possiblities. Another way: look if the code for Partitions can be modified. << "DiscreteMath`Combinatorica`" n = 40; p = Partitions[n]; is = Compile[{{x, _Integer, 1}}, Plus @@ (1/x)]; Timing[ans = p[[Flatten[Position[FractionalPart[is /@ p], x_ /; x < .000001 || x > 0.999999]]]]; ] {13.35 Second,Null} Using your method we get Timing[ans2 = Cases[p, x_ /; IntegerQ[Plus @@ (1/x)]]; ] {47.95 Second,Null} Check: ans === ans2 True -- Allan --------------------- Allan Hayes Mathematica Training and Consulting Leicester UK www.haystack.demon.co.uk hay at haystack.demon.co.uk Voice: +44 (0)116 271 4198 Fax: +44 (0)870 164 0565 "Juan" <erfa11 at hotmail.com> wrote in message news:a2j8u1$7a6$1 at smc.vnet.net... > Hello, > I need your help to resolve this question (I give a example for n=12): > > In[1]:= << DiscreteMath`Combinatorica` > > In[2]:= n = 12; > > In[3]:= p = Partitions[n]; > > > Now, I want to get from p thouse partitions which reciprocal sum is a > integer. > > In[4]:= r = Cases[p, x_ /; IntegerQ[Plus @@ (1/x)]] > > Out[4]:= {{6, 3, 2, 1}, {4, 4, 2, 1, 1}, {3, 3, 3, 1, 1, 1}, {2, 2, 2, 2, 2, > 2}, {2, 2,2, 2, 1, 1, 1, 1}, {2, 2, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, > 1, 1, 1, 1, 1, 1, 1}} > > But, is n is a big number, then you have to wait a big number of seconds to > get r. > > Any suggestion to do that better-faster? > > Best regard > Juan > > > _________________________________________________________________ > Hable con sus amigos en línea, pruebe MSN Messenger: http://messenger.msn.es > >