# Printing the sums of numbers from 1 to 10 with only 1 loop

The code below prints sum from 1 to 10:

$1$
$1+2 =$
$1+2+3 =$
$1+2+3+4 =$
$......$
$1 + ... 10 = 55$

public class Solution{

public static void print_sums(){

int sum = 0 ;
for(int i = 1 ; i <= 10 ; i++){
for(int j = 1 ; j <= i; j++ ){
sum = sum + j ;
}
System.out.println( sum) ;
sum = 0 ;
}

}

public static void main(String[] args)
{
print_sums() ;

}
}


I wonder out of "efficiency curiosity" - is it possible to do it in 1 loop? Without 2 nested loops?

i.e. put both i and j in one loop and increment them from there.

I think it is impossible, because **the whole loop will run only 10 times - i = [1,10]

 for(int i = 1 , j = 1 ; j <= i && i <= 10 ; i++, j++)
//for(int j = 1 ; j <= i; j++ ){
sum = sum + j ;
//}
System.out.println( sum) ;
sum = 0 ;

-
Clearly it is possible to do without any loops. – emory Aug 2 '14 at 21:42
@emory : yes but only to calculate it once, not to print it in each step – JaDogg Aug 6 '14 at 10:10
It is a one liner ... println(1\n3\n6\n...) using a loop would be easier but it is not necessary. – emory Aug 6 '14 at 12:08
if you do it recursively it should be fairly simple – yehuda Aug 9 at 5:00
@emory imagine the problem is 1 to N. – ANeves Aug 9 at 13:11

Yes, it is possible.

public static void printSums() {
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
System.out.println(sum);
}
}


The key is simply to calculate the sum of the first $N$ digits. It is easy if you already have the sum of the first $N-1$ digits : you simply add $N$.

-
And this is a good example of a primitive form of memoization – rolfl Aug 2 '14 at 14:52
Be careful with your loop limits! And look carefully before accepting an answer! – 200_success Aug 2 '14 at 15:12
@200_success, yes , it should be i <=10 : less than or equal – ERJAN Aug 2 '14 at 15:18

Another solution without the mutating sum temporary variable is using the $n * (n + 1) / 2$ formula:

public static void printSums() {
for (int i = 1; i <= 10; i++) {
System.out.println(i * (i + 1) / 2);
}
}

-
In general using the gaussian sum is better than actually calculating the sum. In this case, I suspect the accepted answer would be more efficient. – emory Aug 2 '14 at 21:44

## protected by Jamal♦Sep 15 at 7:08

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.