HiveBrain v1.2.0
Get Started
← Back to all entries
patternjavaModerate

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

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
thewithnumbersloopprintingsumsfromonly

Problem

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 ;

Solution

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\$.

Code Snippets

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

Context

StackExchange Code Review Q#58830, answer score: 14

Revisions (0)

No revisions yet.