80
\$\begingroup\$

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.

Leaderboard

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>

\$\endgroup\$
10
  • 5
    \$\begingroup\$ Closely related \$\endgroup\$ Jul 18, 2017 at 20:36
  • \$\begingroup\$ @FryAmTheEggman Sorry - had a bit of a brain fart there. I see what you mean. \$\endgroup\$
    – GarethPW
    Jul 18, 2017 at 20:45
  • 2
    \$\begingroup\$ @Aaron you got ninja'd by Husk, which was just posted with a 1 byte solution \$\endgroup\$
    – Mayube
    Jul 18, 2017 at 21:35
  • 7
    \$\begingroup\$ I suggest a stack snippet. \$\endgroup\$
    – user58826
    Jul 19, 2017 at 11:42
  • 1
    \$\begingroup\$ Related: minecraftforum.net/forums/off-topic/… \$\endgroup\$ Jul 27, 2017 at 12:20

192 Answers 192

1
3 4
5
6 7
1
\$\begingroup\$

Ahead, 6 bytes

IEK+O@

Try it online!

\$\endgroup\$
1
\$\begingroup\$

@yBASIC, 10 bytes

?_*_+_>>!.

Input should be in _ (No input methods exist)

Explanation

N(N+1) can be rewritten as N*N+N. Dividing by 2 would then require parentheses, but a left shift can be used instead. !. is the same as !0.0 (logical not of 0), which is 1.

\$\endgroup\$
1
\$\begingroup\$

MathGolf, 2 bytes

╒Σ

Try it online!

Pretty much exactly the sum (Σ) of the range from 1 to input ()

\$\endgroup\$
1
\$\begingroup\$

Gol><>, 7 bytes

I:P*2,h

Courtesy of JoKing

Try it online!

8 bytes

I::*+2,h

Try it online!

\$\endgroup\$
0
1
\$\begingroup\$

Go, 29 bytes

A function literal which uses the closed form, \$ \frac n2(n+1) \$.

func(n int)int{return-~n*n/2}

Try it online!

\$\endgroup\$
1
\$\begingroup\$

Symbolic Python, 14 bytes

_*=-~_*_/(_+_)

Try it online!

This basically evaluates to \$ \frac{ n^2 (n-1)}{2n} = \frac{ n (n-1)}{2}\$, which is the usual form for triangular numbers.

\$\endgroup\$
1
\$\begingroup\$

Shakespeare Programming Language, 154 bytes

(Whitespace added for readability)

S.Ajax,.Puck,.Act I:.Scene I:.[Enter Ajax and Puck]
Ajax:
Listen tothy.
You is the quotient betweenthe product ofyou the sum ofyou a cat a big cat.
Open heart

Try it online!

Simple, just does n(n+1)/2.

\$\endgroup\$
1
\$\begingroup\$

Charcoal, 5 bytes

IΣ…·N

Try it online!

Explanation:

 Σ        The sum of
  …·N     the inclusive range from 0 to input
I          converted to a string

I tried to make it with the formula \$\frac{x(x+1)}{2}\$ but it took more characters.

\$\endgroup\$
1
\$\begingroup\$

Keg, 2 bytes (SBCS)

Ï⅀

TIO

Keg, 5 bytes (SBCS)

Ï∑+).

Explanation:

Ï#    Range from input to 0. The 0 will not affect the summation.
 ∑+#  Apply all stack: add.
   )# We have to complete the braces if we want to output as an integer.
    .#Output as an integer

TIO

\$\endgroup\$
2
  • \$\begingroup\$ That's available on the github interpreter and theoretically, it should work. \$\endgroup\$
    – lyxal
    Oct 13, 2019 at 1:13
  • \$\begingroup\$ -1 byte using the -hr flag \$\endgroup\$
    – lyxal
    Dec 6, 2019 at 20:43
1
\$\begingroup\$

Clojure - 19 bytes

#(apply +(range %))

Boring answer is boring...

\$\endgroup\$
1
\$\begingroup\$

Labyrinth, 8 bytes

?:)*_2/!

Try it online!

A linear program which halts by error at the bounced-off / (triggering division by zero).

?:)*  Push input, dup, increment, multiply (giving n*(n+1))
_2/   Divide by 2
!     Pop and print, bounce off the dead end
/     The top is (implicit) 0 so it triggers division by zero error
\$\endgroup\$
1
\$\begingroup\$

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

\$\endgroup\$
1
\$\begingroup\$

MAWP, 8 bytes

@!1+*2$:

Try it!

Old solution that manually loops through integers:

MAWP, 13 bytes

`0@[!\+/1-]`:

Try it!

\$\endgroup\$
1
\$\begingroup\$

<>^v, 8 bytes

,≈)*2?/;

Explanation

,≈)*2?/;

,         Read number from stdin
 ≈        Duplicate top of stack
  )       Increment top of stack
   *      Multiply top element of stack by second element of stack
    2     Push 2
     ?    Swap top two elements of stack
      /   Divide top element of stack by second element of stack
       ;  Print top of stack

run online

\$\endgroup\$
1
\$\begingroup\$

Python 3, 26 bytes

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

Try it online!

Bewildered this isn't here yet.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ It isn't here because it's much longer than the optimal lambda n:n*-~n/2 \$\endgroup\$
    – pxeger
    Dec 10, 2021 at 20:25
1
\$\begingroup\$

APOL, 18 bytes

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

\$\endgroup\$
1
\$\begingroup\$

Factor + math.unicode, 12 bytes

[ [1,b] Σ ]

Try it online!

Posting this here because the other Factor answer is incorrect.

\$\endgroup\$
1
\$\begingroup\$

MSWLogo, 26 bytes

to f :n
pr :n*(:n+1)/2
end

Proof of Correctness

\$\endgroup\$
1
\$\begingroup\$

J-uby, 7 bytes

:+|:sum

Try it online!

\$\endgroup\$
1
\$\begingroup\$

Desmos, 13 bytes

f(n)=.5nn+.5n

Very surprised that there wasn't a Desmos answer here yet.

Try It On Desmos!

\$\endgroup\$
0
\$\begingroup\$

Tcl, 36 bytes

time {incr s [incr n]} $argv;puts $s

Try it online!

\$\endgroup\$
0
\$\begingroup\$

Tcl, 29 bytes

puts [expr $argv*($argv+1)/2]

Try it online!

\$\endgroup\$
3
  • 1
    \$\begingroup\$ If you've got two Tcl answers, you should probably put them in one answer. \$\endgroup\$ Jul 19, 2017 at 0:24
  • \$\begingroup\$ @numbermaniac I have three. \$\endgroup\$
    – sergiol
    Jul 19, 2017 at 0:29
  • 6
    \$\begingroup\$ Ah. It's probably better to put them all in one answer, then. \$\endgroup\$ Jul 19, 2017 at 1:08
0
\$\begingroup\$

QBIC, 10 bytes

?(:+1)/2*a

This prints (input+1) divided by 2 times input. Looping through all numbers from 1 to n is one byte longer:

[:|p=p+a]?p
\$\endgroup\$
0
\$\begingroup\$

Pyke, 2 bytes

Ss

Try it online!

Showing off Pyke's roots in being inspired by Pyth, the function map is exactly the same, only ran as a stack rather than a tree.

S  -  range(1, input+1)
 s - sum(^)
\$\endgroup\$
0
\$\begingroup\$

Scala, 12 bytes

Gauss sum (12 bytes):

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

Naive version (14 bytes):

n=>1.to(n).sum
\$\endgroup\$
0
\$\begingroup\$

Clojure, 28 bytes

#(apply + (range 1 (inc %)))
\$\endgroup\$
0
\$\begingroup\$

Java 8 (39 37 bytes)

n->{System.out.println((n*(n+1))/2);}

saved 2 bytes thanks to @TheLethalCoder. I now realise that I could also omit print statements etc, but there already is a Java answer that I missed, which would end up being pretty much the same thing. Thus I will leave it as this :-)

(Is this the right way of scoring Java? I have no clue if this is valid, I saw it in another answer but this actually omits quite a bit of the code necessary to actually run it..)

try it online

\$\endgroup\$
3
  • 1
    \$\begingroup\$ (n) can be just n. You can return from the lambda, I believe, instead of printing. And yes it's fine to compile to a lambda. \$\endgroup\$ Jul 19, 2017 at 12:34
  • \$\begingroup\$ Side note: Use four spaces to format the code not back ticks. \$\endgroup\$ Jul 19, 2017 at 12:34
  • \$\begingroup\$ @TheLethalCoder thanks! I just found another Java answer to this thread which indeed does it a great deal shorter and does not print ^^ \$\endgroup\$ Jul 19, 2017 at 12:34
0
\$\begingroup\$

Clojure, 16 bytes

#(/(*(inc %)%)2)
\$\endgroup\$
0
\$\begingroup\$

Groovy, 11 bytes

{it*++it/2}

Try it online!


The input is not modified by rules of Groovy clsures.

\$\endgroup\$
0
\$\begingroup\$

PHP, 35 34 32 25 bytes

<?=$argv[1]*++$argv[1]/2;

Run from the command line, with the input as a parameter.

\$\endgroup\$
1
  • \$\begingroup\$ Save 6 bytes with $argn and -F \$\endgroup\$
    – Titus
    Jul 26, 2017 at 11:34
1
3 4
5
6 7

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.