user391967 user391967 - 3 months ago 8
C Question

write program to perform sum = 1+ (1+2) + (1+2+3) + ... + (1+2...+n)

I can't get the codes right.
Can somebody help?

#include<stdio.h>
int main()
{
int n, sum,i,j;

printf("Please enter an integer, n = ");
scanf("%d", &n);

for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
sum = sum + n;
printf("sum = %d", sum);


return 0;
}

Answer
  1. You are not initialising sum. Initialise it with 0.
  2. You shouldn't be adding n at each step, but j.

Of course, this is to fix your current code. There are better approaches to solving the problem, which others have already mentioned.

Edit:

Just for fun, here's a formula that allows you to solve the problem in O(1):

Your sum is equal to n*(n + 1)*(2*n + 1) / 12 + n*(n + 1) / 4.

This is obtained by writing it as a sum and using the fact that the sum of the first n consecutive squares is n(n + 1)(2n + 1) / 6 and the sum of the first n positive ints is n(n + 1)/2. +1 if you can find a nicer form of the formula.

Comments