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

# Pyth, 2 bytes

sS


Try it online! Implicit input. S is 1-indexed range, and s is the sum.

• Finally, Pyth(on) code sounds like a snake. Commented Jul 18, 2017 at 21:15
• This is the perfect challenge for Pyth... Commented Jul 18, 2017 at 22:09
• I was going to answer this, but I guess not Commented Sep 7, 2017 at 3:41

# Husk, 1 byte

Σ


Try it online!

Builtin! Σ in Husk is usually used to get the sum of all elements of a list, but when applied to a number it returns exactly n*(n+1)/2.

• Out of curiosity, does this occur because the number is cast to a range and then summed, or is this actually hardcoded? Commented Jul 18, 2017 at 21:33
• @FryAmTheEggman this is actually hardcoded, and is similar to the behavior of another builtin, Π, which can compute the product of all elements of a list or the factorial of a single number
– Leo
Commented Jul 18, 2017 at 21:37
• Σ is a two byte unicode character on my machine. I guess you use code page 1253? msdn.microsoft.com/en-us/library/cc195055.aspx Commented Jul 19, 2017 at 2:32
• @gmatht Husk's code page Commented Jul 19, 2017 at 3:02

# Piet, 161 bytes / 16 codels

You can interpret it with this Piet interpreter or upload the image on this website and run it there. Not sure about the byte count, if I could encode it differently to reduce size.

Scaled up version of the source image:

### Explanation

The highlighted text shows the current stack (growing from left to right), assuming the user input is 5:

Input a number and push it onto stack

5


Duplicate this number on the stack

5 5


Push 1 (the size of the dark red area) onto stack

5 5 1


5 6


Multiply the top two numbers

30


The black area makes sure, that the cursor moves down right to the light green codel. That transition pushes 2 (the size of dark green) onto stack

30 2


Divide the second number on the stack by the first one

15


Pop and output the top number (interpreted as number)

[empty]


By inserting a white area, the transition is a nop, the black traps our cursor. This ends execution of the program.

Original file (far too small for here):

• We transitioned from an intelligible text (e.g. C) to unintelligible text (e.g. Jelly) to images... What next? :P Commented Jul 24, 2017 at 7:32
• +1 I haven't actually seen a Piet answer with an explanation before Commented Apr 1, 2019 at 23:01
• How did you get 16 for the number of codels? I count 33 (11 by 3), and even just counting the codels that "do something," I can't make it come out to 16. (It's not a super important question since you're scoring the solution in bytes, but I found it puzzling.) Commented Jul 25, 2022 at 17:50

# Brain-Flak, 16 bytes

({({}[()])()}{})


Try it online!

This is one of the few things that brain-flak is really good at.

Since this is one of the simplest things you can do in brain-flak and it has a lot of visibility, here's a detailed explanation:

# Push the sum of all of this code. In brain-flak, every snippet also returns a
# value, and all values inside the same brackets are summed
(
# Loop and accumulate. Initially, this snippet return 0, but each time the
# loop runs, the value of the code inside the loop is added to the result.
{
# Push (and also return)...
(
# The value on top of the stack
{}

# Plus the negative of...
[
# 1
()
]

# The previous code pushes n-1 on to the stack and returns the value n-1
)

# 1
# This code has no side effect, it just returns the value 1 each loop.
# This effectively adds 1 to the accumulator
()

# The loop will end once the value on top of the stack is 0
}

# Pop the zero off, which will also add 0 to the current value
{}

# After the sum is pushed, the entire stack (which only contains the sum)
# will be implicitly printed.
)


# Oasis, 3 bytes

n+0


Try it online!

## How it works

n+0
0    a(0)=0
n+     a(n)=n+a(n-1)

• And here I was, all of my life thinking that n+0 is n... Commented Jul 19, 2017 at 7:22

## JavaScript (ES6), 10 bytes

n=>n*++n/2


### Example

let f =

n=>n*++n/2

console.log(f(5))

• n*-~n/2 also works, but only for n < 2**31 Commented Dec 3, 2017 at 18:53

# Mathematica, 9 bytes

#(#+1)/2&


# Mathematica, 10 bytes

(#^2+#)/2&


# Mathematica, 11 bytes

Tr@Range@#&


# Mathematica, 12 bytes

i~Sum~{i,#}&


# Mathematica, 14 bytes

(by @user71546)

1/2/Beta[#,2]&


# Mathematica, 15 bytes

Tr[#&~Array~#]&


# Mathematica, 16 bytes

Binomial[#+1,2]&


# Mathematica, 17 bytes

(by @Not a tree)

⌊(2#+1)^2/8⌋&


# Mathematica, 18 bytes

PolygonalNumber@#&


# Mathematica, 19 bytes

#+#2&~Fold~Range@#&


# Mathematica, 20 bytes

(by @Not a tree)

f@0=0;f@i_:=i+f[i-1]

• It seems a shame to skip 13, 14 and 17… Commented Jul 19, 2017 at 0:48
• It seems like a next challenge....or at least help me to complete the list. Commented Jul 19, 2017 at 0:51
• I still don't have anything for 13 or 14 bytes (apart from just un-golfing your shorter answers), but here are another 26 with larger byte-counts. Commented Jul 19, 2017 at 7:16
• @MarkS. on 10.4 works fine Commented Jul 25, 2017 at 10:56
• @Notatree For your list, here is a candidate for 35: Array[Boole[#2>=#]&,{#,#}]~Total~2& Commented Aug 12, 2017 at 5:07

# Python 2, 24 16 bytes

-8 bytes thanks to FryAmTheEggman.

lambda n:n*-~n/2


Try it online!

# x86_64 machine language (Linux), 9 8 bytes

0:   8d 47 01                lea    0x1(%rdi),%eax
3:   f7 ef                   imul   %edi
5:   d1 e8                   shr    %eax
7:   c3                      retq


To Try it online! compile and run the following C program.

#include<stdio.h>
const char f[]="\x8d\x47\x01\xf7\xef\xd1\xe8\xc3";
int main(){
for( int i = 1; i<=10; i++ ) {
printf( "%d %d\n", i, ((int(*)())f)(i) );
}
}


Thanks to @CodyGray and @Peter for -1.

• You should probably use shr instead of sar, to treat your output as unsigned (no change in code size). (Spotted by @CodyGray and pointed out in his 7-byte add+loop answer). Commented Jul 22, 2017 at 8:36
• This looks optimal for performance in an implementation of the closed-form formula, but you can save a byte by using the one-operand form of mul %edi or imul %edi (each 2B) instead of the 3B two-operand form. It clobbers EDX with the high-half result, but that's fine. Multi-operand imul was introduced later than the one-operand form, and has a 2-byte opcode with a 0F escape byte. Any of the three options will always produce the same result in eax, it's only the high half that depends on signed vs. unsigned. Commented Jul 22, 2017 at 8:36

# C# (.NET Core), 10 bytes

n=>n++*n/2


Try it online!

• Polyglots with JS. Commented Apr 19, 2021 at 20:41

# Java (OpenJDK 8), 10 bytes

n->n++*n/2


Try it online!

# Jelly, 2 bytes

RS


Try it online!

## Explanation

RS

implicit input
S  sum of the...
R   inclusive range [1..input]
implicit output


## Gauss sum, 3 bytes

‘×H


### Explanation

‘×H

implicit input
H  half of the quantity of...
‘    input + 1...
×   times input
implicit output

• This also works in Anyfix :P (not on TIO) Commented Jul 18, 2017 at 21:08

# Octave, 22 19 bytes

Because arithmetic operations are boring...

@(n)nnz(triu(e(n)))


Try it online!

### Explanation

Given n, this creates an n×n matrix with all entries equal to the number e; makes entries below the diagonal zero; and outputs the number of nonzero values.

• Is this actually shorter than the numerical version? Commented Jul 23, 2017 at 15:26
• @Challenger5 No, But the numerical version is boring: @(n)sum(1:n) Commented Jul 23, 2017 at 15:52
• Or 16 bytes with arithmetic operations, but no sum. Commented Aug 6, 2017 at 17:35

This is the shortest (I thinkthought):

f n=sum[1..n]


Try it online!

### Direct, 17 13 bytes

f n=n*(n+1)/2


Thanks @WheatWizard for -4 bytes!

Try it online!

### Pointfree direct, 15 bytes

(*)=<<(/2).(+1)


Thanks @nimi for the idea!

Try it online!

### Pointfree via sum, 16 bytes

sum.enumFromTo 1


Try it online!

### Recursively, 22 18 bytes

f 0=0;f n=n+f(n-1)


Thanks @maple_shaft for the idea & @Laikoni for golfing it!

Try it online!

### Standard fold, 19 bytes

f n=foldr(+)0[1..n]


Try it online!

# Java (OpenJDK 8), 10 bytes

a->a++*a/2


Try it online!

Took a moment to golf down from n->n*(n+1)/2 because I'm slow.

But this isn't a real Java answer. It's definitely not verbose enough.

import java.util.stream.*;
a->IntStream.range(1,a+1).sum()


Not bad, but we can do better.

import java.util.stream.*;
(Integer a)->Stream.iterate(1,(Integer b)->Math.incrementExact(b)).limit(a).reduce(0,Integer::sum)


I love Java.

• If you want it to be even more verbose why use a lambda!? :P Commented Jul 19, 2017 at 12:36
• I was aiming for verbose lambdas, I could write a full program if I wanted to be particularly eloquent :P Commented Jul 19, 2017 at 12:38
• The exact same solution was already posted Commented Jul 19, 2017 at 18:56
• I must have missed it, but in any case, I tend to not look at the contents of other answers. I prefer to write my own golf. Commented Jul 20, 2017 at 11:21

# APL, 3 bytes

+/⍳


Try it online!

+/ - sum (reduce +), ⍳ - range.

• This depends on the indexing. If indexing is set to 0, then you'd need an additional 2 bytes 1+ Commented Jul 18, 2017 at 21:27
• @Werner indexing is default 1 so I didn't specify. its common here to specify only when using ⎕IO←0 (and it does not included in byte count) Commented Jul 18, 2017 at 21:29

# Taxi, 687 bytes

Go to Post Office:w 1 l 1 r 1 l.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:s 1 l 1 r.Pickup a passenger going to Cyclone.Go to Cyclone:n 1 l 1 l 2 r.[a]Pickup a passenger going to Addition Alley.Pickup a passenger going to The Underground.Go to Zoom Zoom:n.Go to Addition Alley:w 1 l 1 r.Pickup a passenger going to Addition Alley.Go to The Underground:n 1 r 1 r.Switch to plan "z" if no one is waiting.Pickup a passenger going to Cyclone.Go to Cyclone:n 3 l 2 l.Switch to plan "a".[z]Go to Addition Alley:n 3 l 1 l.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:n 1 r 1 r.Pickup a passenger going to Post Office.Go to Post Office:n 1 l 1 r.


Try it online!

[ n = STDIN ]
Go to Post Office: west 1st left 1st right 1st left.
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery: south 1st left 1st right.
Pickup a passenger going to Cyclone.
Go to Cyclone: north 1st left 1st left 2nd right.

[ for (i=n;i>1;i--) { T+=i } ]
[a]
Pickup a passenger going to Addition Alley.
Pickup a passenger going to The Underground.
Go to Zoom Zoom: north.
Go to Addition Alley: west 1st left 1st right.
Pickup a passenger going to Addition Alley.
Go to The Underground: north 1st right 1st right.
Switch to plan "z" if no one is waiting.
Pickup a passenger going to Cyclone.
Go to Cyclone: north 3rd left 2nd left.
Switch to plan "a".

[ print(T) ]
[z]
Go to Addition Alley: north 3rd left 1st left.
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery: north 1st right 1st right.
Pickup a passenger going to Post Office.
Go to Post Office: north 1st left 1st right.


It's 22.6% less bytes to loop than it is to use x*(x+1)/2

# Julia, 10 bytes

n->n*-~n/2


Try it online!

### 11 bytes (works also on Julia 0.4)

n->sum(1:n)


Try it online!

# Starry, 27 22 bytes

5 bytes saved thanks to @miles!

, + +  **       +   *.


Try it online!

### Explanation

,             Read number (n) from STDIN and push it to the stack
+            Duplicate top of the stack
+            Duplicate top of the stack
*           Pop two numbers and push their product (n*n)
*             Pop two numbers and push their sum (n+n*n)
+      Push 2
*          Pop two numbers and push their division ((n+n*n)/2)
.             Pop a number and print it to STDOUT

• Commented Jul 18, 2017 at 23:20
• @miles Thanks! Very good idea! Commented Jul 18, 2017 at 23:53

# 05AB1E, 2 bytes

LO


Try it online!

# How it works

     #input enters stack implicitly
L    #pop a, push list [1 .. a]
O   #sum of the list
#implicit output


# Gauss sum, 4 bytes

>¹*;


Try it online!

# How it works

>       #input + 1
¹*     #get original input & multiply
;    #divide by two

• ÝO also works and means hello. Commented Jul 19, 2017 at 15:01
• L0 and behold.. Commented Dec 11, 2017 at 16:16
• The Gaussian sum can be shortened by one byte without ¹, as implicit input can be reused. Commented Apr 19, 2021 at 20:37

# MATL, 2 bytes

:s


Try it online!

Not happy smiley.

• Damn it, finally a challenge I could easily answer in MATL, but you beat me to it :(
– Lui
Commented Jul 19, 2017 at 6:27

# dc, 7 bytes

d1+*2/p


OR

d2^+2/p


OR

dd*+2/p


Try it online!

# Piet + ascii-piet, 16 bytes (4×4=16 codels)

tabR   Smm Amtqa


Try Piet online!

### How it works

The code simply follows the border and then stops at the 3-cell L-shaped region. Basically uses the well-known formula, because setting up a loop here costs too many cells due to the necessary roll command.

Command    Stack
inN        [n]
dup 1 +    [n n+1]
* 2 /      [n*(n+1)/2]
outN       []


This layout saves two black cells over the following linear, more straightforward (pun intended) layout:

# Piet + ascii-piet, 18 bytes (2×9=18 codels)

tabrsaqtM     a mm


Try Piet online!

# Brainfuck, 24 Bytes.

I/O is handled as bytes.

,[[->+>+<<]>[-<+>]<-]>>.


## Explained

,[[->+>+<<]>[-<+>]<-]>>.
,                           # Read a byte from STDIN
[                  ]       # Main loop, counting down all values from n to 1
[->+>+<<]                 # Copy the i value to *i+1 and *i+2
>[-<+>]          # Move *i+1 back to i
<-        # Move back to i, lower it by one. Because *i+2 is never reset, each iteration adds the value of i to it.
>>.    # Output the value of *i+2

• It's pretty cool that Brainfuck is able to beat some higher-level languages in this challenge. Commented Jul 19, 2017 at 10:49
• Is that legit for me to add an answer in Lenguage (just for fun) using your code? @ATaco Commented Jul 26, 2017 at 12:44
• I don't think so, as it would be the same code, just encoded different. @V.Courtois Commented Jul 26, 2017 at 13:07
• @ATaco Ahh you're right. Commented Jul 26, 2017 at 13:19

# C++ (template metaprogramming), 80 bytes (?)

I'm not very sure if it is acceptable because you need to insert input into source, which seems to be permitted for languages like /// only.

template<int N>struct s{enum{v=N+s<N-1>::v};};template<>struct s<1>{enum{v=1};};


Example:

#include <iostream>
int main()
{
std::cout<<s<10>::v;
return 0;
}


# ,,,, 6 bytes

:1+×2÷


## Explanation

:1+×2÷

:       ### duplicate
×    ### multiply
2÷  ### divide by 2


If I implement range any time soon...

rΣ


seq -s+ $1|bc  Try it online! seq generates a sequence. seq 5 generates a sequence of numbers from 1 to 5 with a default increment of 1. seq with the -s flag uses a string parameter to separate the numbers (the default separator is \n). So seq -s+$1 generates numbers from 1 to $1, the first argument, using + as the separator. With an argument of 5, this generates 1+2+3+4+5. Now this is piped into bc using |bc to calculate the result of this mathematical expression and that value it outputted. # Retina 0.8.2, 13 bytes .+$*
1
$1 1  Try it online! Explanation: The first and last stages are just unary ⇔ decimal conversion. The middle stage replaces each 1 with the number of 1s to its left plus another 1 for the 1 itself, thus counting from 1 to n, summing the values implicitly. • Beaten by 4 bytes in Retina 1.0. Commented Jul 22, 2022 at 18:08 • @Deadcode Yeah, Retina 0.8.2 (which this answer is in, since Retina 1 didn't exist at the time) doesn't have an equivalent to Retina 1's w flag. Nice approach though! – Neil Commented Jul 22, 2022 at 18:59 • I know, that's why I included the version number in my comment. And thanks. Commented Jul 22, 2022 at 19:05 • Replacing 1 with $'1 or 1? with $ also works for the same byte count. Replacing 1 with $ or \$' results in binomial(n,2).
– Neil
Commented Jul 24, 2022 at 8:51

# Trilangle, 9 bytes

How appropriate that the triangular language is computing triangular numbers.

?2')2!*:@


Try it on the online interpreter!

Unwraps to this triangular grid:

   ?
2 '
) 2 !
* : @ .


Instructions are executed in this order:

• ?: Read an integer from STDIN
• 2: Duplicate the top of the stack
• ): Increment the top of the stack
• *: Multiply the two values off the top of the stack
• '2: Push the number 2 to the stack
• :: Divide the two values off the top of the stack
• !: Print the top of the stack as a decimal number
• @: Terminate program.

Effectively identical to this C program:

#include <stdio.h>

int main() {
// ?
int i; while(!scanf("%i", &i)) getchar();

// 2)*
i *= i + 1;

// '2:
i /= 2;

// !
printf("%d\n", i);

// @
return 0;
}
`