patternjavaModerate
Printing the sums of numbers from 1 to 10 with only 1 loop
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\$
I wonder out of "efficiency curiosity" - is it possible to do it in 1 loop? Without 2 nested loops?
i.e. put both
I think it is impossible, because **the whole loop will run only 10 times
\$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.
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\$.
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.