[image: \sigma_x(n) = \prod_{i=1}^{r}
\frac{p_{i}^{(a_{i}+1)x}-1}{p_{i}^x-1}]

If you are computing the sum of the divisors Henry's solution is far far
superior.  It's based on the above formula.  If you can't read it it's
translated into J as follows:

Let p be the primes and e the exponents in the prime factorization of n
(i.e. 'p e'=.__ q: n).  x=1 for our purpose.  Then the sum of the divisors
is */ ((p^1+e)-1) % p-1 ←→ */ (p^1+e) %&<: p .





On Tue, Jun 10, 2014 at 1:52 PM, 'Pascal Jasmin' via Programming <
[email protected]> wrote:

> My solution is incorrect for large inputs sorry.  Roger's is fastest
> correct solution.
>
>
> ----- Original Message -----
> From: 'Pascal Jasmin' via Programming <[email protected]>
> To: "[email protected]" <[email protected]>
> Cc:
> Sent: Tuesday, June 10, 2014 4:13:43 PM
> Subject: Re: [Jprogramming] Shorten a verb
>
> don't know if this is an improvement, but it should be fast
>
>    (1 , [: /:~@:~.@:, [: */\"1 (i.@>:@#) |."0 1 ])@:q: 360
> 1 2 3 4 5 6 8 9 10 12 15 18 20 24 30 36 40 45 60 72 90 120 180 360
>
>
>
> ----- Original Message -----
> From: R.E. Boss <[email protected]>
> To: [email protected]
> Cc:
> Sent: Tuesday, June 10, 2014 3:11:37 PM
> Subject: Re: [Jprogramming] Shorten a verb
>
> Remarkably, I was just thinking about such a divisor verb (since I needed
> it
> to represent an array as a matrix) and came to
>
>    (3 :('b, y%|. b=.a#~ 0=y|~ a=.i.&.<: >.%:y'))51
> 1 3 17 51
>
>    (3 :('b, y%|. b=.a#~ 0=y|~ a=.i.&.<: >.%:y'))360
> 1 2 3 4 5 6 8 9 10 12 15 18 20 24 30 36 40 45 60 72 90 120 180 360
>
> Or tacitly
>   (](([, (% |.))]#~ 0=|~) [:i.&.<: >.@%:)
>
>
> R.E. Boss
>
> (Add your info to http://www.jsoftware.com/jwiki/Community/Demographics )
>
>
>
> > -----Original Message-----
> > From: [email protected] [mailto:programming-
> > [email protected]] On Behalf Of Roger Hui
> > Sent: dinsdag 10 juni 2014 19:19
> > To: Programming forum
> > Subject: Re: [Jprogramming] Shorten a verb
> >
> > From http://www.jsoftware.com/jwiki/Essays/Divisors
> >
> >    div=: /:~ @: , @: > @: (*/&.>/) @: ((^ i.@>:)&.>/) @: (__&q:)
> >    div 360
> > 1 2 3 4 5 6 8 9 10 12 15 18 20 24 30 36 40 45 60 72 90 120 180 360
> >
> >
> >
> >
> >
> > On Tue, Jun 10, 2014 at 10:10 AM, Jon Hough <[email protected]>
> > wrote:
> >
> > > My attempt at making a verb that finds the total of all proper divisors
> of
> > > an integer seems to work.
> > > e.g. if n = 12, the sum of proper divisors is 1 +2 +3+4+6 = 16 (note 12
> is
> > > not included)
> > > This verb is actually equal to the "sigma function" minus n.Wikipedia
> > > explanation: http://en.wikipedia.org/wiki/Divisor_function
> > > (I essentially used the equation for sigma_x(n) where x = 1)
> > > my verb:
> > >
> > > sum =.(((*/@:-&1@:{.)%~(*/@:-&1@:({.^(1&+@:,@:}.))))@:(2&p:))-]
> > > This seems ok, but is not aesthetically pleasing, and seems to be very
> > > bracketty, and given that the mathematical equation is pretty concise I
> am
> > > surprised the J verb is so long. If anyone knows a nicer way of doing
> this
> > > I would be grateful to see it.
> > > Regards.
> > > ----------------------------------------------------------------------
> > > For information about J forums see
> > http://www.jsoftware.com/forums.htm
>
>
>
>
>
>
> > >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to