correction sum=: ]1+] for even numbers only from 2 to n%2

For numbers from 1 to n the sum is (n+1)*n%2 .

In the case that you give  x= sum of a+ (n-1)b,    which should be a+sum(n-1*b)  which can be simplified to a +b(1+2+3+..n-1)which becomes a +b*n*(n-1)%2  As you are considering a +(a+b)+ (a+2b) etc then this becomes (a*n) +b*n*(n-1)%2 which can be reduced to
a +1r2*b*]*1+]

Try it

Don

On 2017-08-31 7:39 PM, Don Kelly wrote:
The pairing eliminates the brute force  summing of the series. This is what Gauss found. In the case of only even numbers from 2 to n , this works. In the case of 42 there are 21 even numbers of which 20 can be paired off pairs 2+42,4+40 etc, each averaging 22 and there is an unpaired number which  is also 22 so we have 21*22. we could use

sum=: ]1+]

sum 21

462   But 'evensum ' below avoids the  onerous task of dividing 42 by 2 before entry


evensum=: 1r4*]*2+]

evensum 42
462

evensum 10 100 1000 10000

30 2550 250500 25005000


If you want numbers >4 to  42 then  -/evensum 42  4 does the trick



On 2017-08-30 9:27 PM, Xiao-Yong Jin wrote:
On Aug 30, 2017, at 10:43 PM, Don Kelly <[email protected]> wrote:

I agree with your opinion of what Skip wrote.  looking back to Gauss and figuring out the symmetry works for both odd and even cases (42 &43 for example. However in his statement the numbers are 1...21 where the numbers are 2 to 42  all even numbers- the result is still 21*22 . 42%2 is 21 which is odd so that there is 1 number that isn't paired and 20  pairs averaging 22 and the oddball is 1 number =22  Hence 22*21. The same result is for 1 to 43 as the odd numbers are ignored. If one considers evens between 2 and 44, there are 22 pairs (no oddball) averaging 23- the same rule works average =1+number of pairs. For summing odd numbers, add 1 to each number, drop the odds and do the even sum- then subtract the total (21 in this case to get 462-21=441.
I don't understand why you worry about pairing, but if j code makes it easier to understand, here is a derivation I learned from my elementary school.

NB. for any evenly spaced sequence X: a, a+b, a+2*b, ... , a+(n-1)*b
X =. a+n*i.b
( +/ -: +/@|.               ) X
( +/ -: -:@(+/ + +/@|.)     ) X
( +/ -: -:@([:+/ +/@(,:|.)) ) X
( +/ -: -:@([:+/ ##{.+{:)   ) X
( +/ -: -:@(#*{.+{:)        ) X

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