# Sum of all integers from 1 to n

I'm honestly surprised that this hasn't been done already. If you can find an existing thread, by all means mark this as a duplicate or let me know.

# Input

Your input is in the form of any positive integer greater than or equal to 1.

# Output

You must output the sum of all integers between and including 1 and the number input.

# Example

 In: 5
1+2+3+4+5 = 15
Out: 15


OEIS A000217 — Triangular numbers: a(n) = binomial(n+1,2) = n(n+1)/2 = 0 + 1 + 2 + ... + n.

Run the code snippet below to view a leaderboard for this question's answers. (Thanks to programmer5000 and steenbergh for suggesting this, and Martin Ender for creating it.)

var QUESTION_ID=133109,OVERRIDE_USER=69148;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px} /* font fix */ body {font-family: Arial,"Helvetica Neue",Helvetica,sans-serif;} /* #language-list x-pos fix */ #answer-list {margin-right: 200px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>

• Closely related Jul 18 '17 at 20:36
• @FryAmTheEggman Sorry - had a bit of a brain fart there. I see what you mean. Jul 18 '17 at 20:45
• @Aaron you got ninja'd by Husk, which was just posted with a 1 byte solution Jul 18 '17 at 21:35
• I suggest a stack snippet.
– user58826
Jul 19 '17 at 11:42
• Jul 27 '17 at 12:20

# Aheui (esotope), 33 bytes

방빠받반타다따반나망해


Try it online!

# Tidy, 13 bytes

{a:[1,a]|sum}


Try it online!

## Explanation

{a:[1,a]|sum}
{a:         }    lambda with parameter a
[1,a]         range from 1 to a
|sum     sum


Same byte count: {n:n*(n+1)/2}

# Attache, 8 bytes

Sum@1&:


Try it online!

## Explanation

This is a composition of two functions: Sum and 1&:. First, 1&: is a range from 1 to the input; Sum then sums the elements.

# Tir, 4 bytes

{∟+}


Try it online!

## Explanation

{∟+}    a block
∟      range from 1 to the input
+     sum that range


# Fynyl, 5 bytes

{rf+}


Try it online!

## Explanation

{rf+}    block
r       range from 1 to input


# Somme, 6 bytes

n:i*G.


Try it online!

## Explanation

n:i*G.
n         numeric input      [n]
:        duplicate          [n, n]
i       increment          [n, n+1]
*      product            [n(n+1)]
G     halve              [n(n+1)/2]
.    output             []


# ;#+, 19 bytes

*;(~;~*;)-~(~+~;)+p


Try it online!

Takes input in unary, outputs in decimal.

*;(~;~*;)-~(~+~;)+p
*;                     read 1 byte of input and increment it (check EOF)
~;~                 increment the secondary accumulator
(   *;)              ...while there is still input
-             set delta value to -1 (subtraction)
the state is now (0, N, -)
~(~ ~;)      for each character read
+         subtract N from the secondary accumulator
(N decreases with each iteration)
the state is now (0, -sum, -)
+     subtracts sum from accumulator (0 - (-sum) = 0 + sum = sum)
p    print that value


# D, 28 bytes

N f(N)(N n){return n*-~n/2;}


Try it online!

Alternatively, 61 bytes: import std.range;N f(N)(N n){return std.range.iota(n).sum+n;}

# DScript, 28 bytes

N f(N)(N n){return n*-~n/2;}


Try it online!

Alternatively, 34 bytes: N f(N)(N n){return iota(n).sum+n;}

# Runic Enchantments, 8 bytes

i:1+*2,@


Try it online!

Nothing exciting here, reads input multiplies it with itself+1, divides by 2, and outputs.

Kind of feel that I should have anticipated this sort of 1-input-1-output mathematical operation and made a MathFunc (A) operation for it ("its factorial, but addition!"), but I didn't.

## W, 2 bytes

+R


## Explanation

   % Implicit range from 1 .. input
+R % Reduce the array via addition


# Rust, 12 bytes

|n|n*(n+1)/2


Try it online!

Anonymous function.

# Z80Golf, 11 bytes

00000000: cd03 8047 af80 0520 fcff 76              ...G... ..v


Try it online!

I/O as byte values, takes a byte, outputs a byte. Assembly:

    call $8003 ld b, a xor a loop: add a, b dec b jr nz, loop rst$38
halt


# Z80Golf, 13 bytes

00000000: cd03 805f 193d 20fb 7dff 7cff 76         ..._.= .}.|.v


Try it online!

I/O as byte values, takes a byte, outputs two bytes little endian. Assembly:

    call $8003 loop: ld e, a add hl, de dec a jr nz, loop ld a, l rst$38
ld a, h
rst $38 halt  # Z80Golf, 54 bytes 00000000: cd03 8038 0ed6 3029 e5d1 2929 195f 1600 ...8..0)..))._.. 00000010: 1918 ede5 d11b 197b b220 facd 1f00 7611 .......{. ....v. 00000020: 0000 01f6 ff09 3003 1318 faeb d57d b4c4 ......0......}.. 00000030: 1f00 d17b c63a ...{.:  Try it online! Proper, decimal I/O. Uses a recursive output routine, with a particularly clever 0-byte tailcall: get_input: call$8003
jr c, got_input
sub a, '0'
push hl
pop de
ld e, a
ld d, 0
jr get_input

got_input:
push hl
pop de
loop:
dec de
ld a, e
or a, d
jr nz, loop

call output
halt

; Input:
; HL = number to print
output:
ld de, 0 ; quotient
ld bc, -10
div_loop:
jr nc, neg
inc de
jr div_loop
neg:
ex de, hl
; now: hl = quotient, de = remainder - 10
push de
ld a, l
or h
call nz, output
pop de
ld a, e
; fallthrough to $8000 where the output hook is  Everything assembled with WLA-DX. The -b flag was passed to wlalink, and the following memory map was used: .ROMBANKMAP BANKSTOTAL 1 BANKSIZE$10000
BANKS 1
.ENDRO

.MEMORYMAP
DEFAULTSLOT 0
SLOTSIZE $10000 SLOT 0$0000
.ENDME


# Rockstar, 39 bytes

listen to N
cast N
let N be*N+1
say N/2


Try it here (Code will need to be pasted in)

# Arn, 3 bytes

+\~


Try it!

+\ -> Fold with sum ~ -> One-range to _ -> Input; implied

# Bound, 3 bytes

i&n


Explanation:

i # Gets input and puts it onto the stack if its an int
& # Pops the top element, and puts the range of 1 to n on the stack
n # Sums all ints in the stack


Try it online!

# Duocentehexaquinquagesimal, 10 bytes

1ËвáýŸÚ¦˜Í


Try it online! I/O as characters.

# Branch, 12 bytes

^\n}^*^\2^:#


Try it on the online Branch interpreter!

Uses n * (n - 1) / 2

A solution that actually properly produces all the numbers and sums them:

# Branch, 15 bytes

[/;{]^[\;^+^]/#


Try it on the online Branch interpreter!

And if you replace the # with  (shorthand for P when at the end of a program) you can see that it places the cumulative sums along the main left branch.

# MashedPotatoes, 144 bytes

synchronized
(0.0f){casestd::ignoreof{_->usestrictqw/nullptr/;}goto++i;(formatt"WHILE$ARGV<$[SETLOCAL*read-eval*WEND")procFS{uniq-c}{s/()//g}}


MashedPotatoes isn't available on TIO, so here's the Esolangs page for reference.

https://esolangs.org/wiki/MashedPotatoes

The annotated code below might not make sense without reading about the quirky language syntax first, but here goes...

synchronized
(0.0f) {


Sets the value of Label0 to 2 (the line number where the ( appears. Important for register rotation expression later.

case std::ignore of { _ -> use strict qw/nullptr/; }


Read an integer from STDIN into register ^A.

goto ++i;


Shift the registers, meaning ^A -> ^C -> ^E, to move the input to ^C.

(format t "


Loops while the contents of ^C are greater than 0.

WHILE $ARGV <$[ SETLOCAL *read-eval* WEND


Adds the value of ^C to register ^E.

")


End of loop, automatically decrements ^C.

proc FS {uniq -c} { s/()//g }


Prints the contents of ^E.

}

Just closing the synchronized statement to end the program cleanly

# MMIX, 28 bytes (7 instructions)

(a function)

23FF0001 1A0000FF 3F000001 FEFF0003
3BFFFF3F C00000FF F8010000


Dissassembly:

    ADDU $255,$0,1      // tmp = n + 1
MULU $0,$0,$255 // rH:n = n * tmp SRU$0,$0,1 // n >>>= 1 GET$255,rH        // tmp = rH
SLU  $255,$255,63   // tmp <<= 63
OR   $0,$0,$255 // n |= tmp POP 1,0 // return(n)  I used the obvious straight-line version. This computes the result mod $$\2^{64}\$$. # JavaScript (Node.js), 12 bytes n=>(n*n+n)/2  Try it online! • -2 bytes: n=>n*--n/2 Jul 19 '17 at 17:28 • Could you elaborate? :-) Jul 19 '17 at 18:19 • n=>n*++n/2 is the same thing as n=>n*(n+1)/2, while also changing the value of n. Since we don't need n anymore, this doesn't matter. (n=>n*--n/2 is incorrect due to a typo) Jul 20 '17 at 7:40 # MAWP, 8 bytes @!1+*2$:


Try it!

Old solution that manually loops through integers:

# MAWP, 13 bytes

0@[!\+/1-]:


Try it!

# Knight, 11 bytes

O/*+1=xPx 2


Try it online!

Ungolfed:

OUTPUT / (* (+1 = x PROMPT) x) 2


How the magic works:

This is using the fact that $$\\sum_{n=1}^{x} n == \frac{x(x - 1)}{2}\$$

1. =xP First, we read a line from standard input and assign to x. Normally, we would do +0P to immediately coerce it to a Number, but I have better plans.
2. +1=xP We add the result of the assignment to $$\1\$$. This coerces to Number for us, giving a result of Number.
3. *+1=xPx We then multiply that by x. Since +1=xP is a Number, x will also be converted to a Number. Now, we have $$\x(x - 1)\$$.
4. Last, divide by 2 and output.

# Python 3, 26 bytes

lambda n:sum(range(1,n+1))


Try it online!

Bewildered this isn't here yet.

• It isn't here because it's much longer than the optimal lambda n:n*-~n/2 Dec 10 '21 at 20:25

# APOL, 18 bytes

v(0);ⅎ(⧣ ∆(0 ∈));⁰`