Re: Working with factors of triangular numbers.
- To: mathgroup at smc.vnet.net
- Subject: [mg78777] Re: Working with factors of triangular numbers.
- From: Bill Rowe <readnewsciv at sbcglobal.net>
- Date: Mon, 9 Jul 2007 01:38:55 -0400 (EDT)
On 7/8/07 at 6:14 AM, akoz at mimuw.edu.pl (Andrzej Kozlowski) wrote: >In fact, one more remark (its hard to stop adding these remarks!). >Clearly if you are computing the values of T[n] for several >different n, this is an inefficient way to proceed, because you if >we know that t1 is the smallest triagular number that can be >factored as a product of n factors than we know also that no >triangular number smaller than t1 can be factored as a product of >(n+1) factors. It is then better to proceed like this. >t[a_] := k /. ToRules[Reduce[k (k + 1)/2 == a && k > 0, k]] >T[n_, m_:1] := >Block[{k = t[m], $Messages}, While[k++; FF[k*((k + 1)/2) - 1] < >n, Null]; >k*((k + 1)/2)] >T can now be usd to search starting with the last found triangular >number. Thus: >i = 1; NestList[T[++i, #] &, 3, 6] {3, 15, 55, 253, 1081, 13861, >115921} =46WIW, it appears you can get a small improvement in speed by substituting Binomial[k+1,2] for k(k+1)/2. On my PowerBook, I get: In[26]:= Timing[tt = Table[n (n + 1)/2, {n, 100000}];] Out[26]= {0.600173,Null} In[27]:= Timing[bb = Table[Binomial[n + 1, 2], {n, 100000}];] Out[27]= {0.442553,Null} In[28]:= tt == bb Out[28]= True In[29]:= $Version Out[29]= 6.0 for Mac OS X PowerPC (32-bit) (April 20, 2007) Apparently, the built in function Binomial has an optimization which possibly avoids a divide operation. -- To reply via email subtract one hundred and four