Sum of odd numbers

Given the triangle of consecutive odd numbers:

             1
          3     5
       7     9    11
   13    15    17    19
21    23    25    27    29
...

Calculate the row sums of this triangle from the row index (starting at index 1) e.g.:

rowSumOddNumbers(1); // 1
rowSumOddNumbers(2); // 3 + 5 = 8
rowSumOddNumbers 1 (* 1 *)
rowSumOddNumbers 2 (* 3 + 5 = 8 *)
rowSumOddNumbers(1); // 1
rowSumOddNumbers(2); // 3 + 5 = 8
rowSumOddNumbers(1); -- 1
rowSumOddNumbers(2); -- 3 + 5 = 8
rowSumOddNumbers(1); // 1
rowSumOddNumbers(2); // 3 + 5 = 8
rowSumOddNumbers(1); /* 1 */
rowSumOddNumbers(2); /* 3 + 5 = 8 */
rowSumOddNumbers(1) # 1
rowSumOddNumbers(2) # 3 + 5 = 8
rowSumOddNumbers(1); // 1
rowSumOddNumbers(2); // 3 + 5 = 8
row_sum_odd_numbers(1); # 1
row_sum_odd_numbers(2); # 3 + 5 = 8
row_sum_odd_numbers(1); # 1
row_sum_odd_numbers(2); # 3 + 5 = 8
row_sum_odd_numbers(1); # 1
row_sum_odd_numbers(2); # 3 + 5 = 8
rowSumOddNumbers(1); // 1
rowSumOddNumbers(2); // 3 + 5 = 8
rowSumOddNumbers(1); // 1
rowSumOddNumbers(2); // 3 + 5 = 8
rowSumOddNumbers 1 // 1
rowSumOddNumbers 2 // 3 + 5 = 8
rowSumOddNumbers 1 -- 1
rowSumOddNumbers 2 -- 3 + 5 = 8
row_sum_odd_numbers(1) # 1
[1] 1
row_sum_odd_numbers(2) # 3 + 5
[1] 8
mov rdi 1
call row_sum_odd_numbers    ; rax <- 1

mov rdi 2
call row_sum_odd_numbers   ; rax <- 3 + 5
(row-sum-odd-numbers 1) # 1
(row-sum-odd-numbers 2) # 3 + 5 = 8
rowsumoddnumbers(1) # 1
rowsumoddnumbers(2) # 3 + 5 = 8
rowSumOddNumbers(1) // 1
rowSumOddNumbers(2) // 3 + 5 = 8
rowSumOddNumbers(1) // 1
rowSumOddNumbers(2) // 3 + 5 = 8
SumOfOdd.row_sum_odd_numbers(1) // 1
SumOfOdd.row_sum_odd_numbers(2) // 3 + 5 = 8
row_sum_odd_numbers(1) % 1
row_sum_odd_numbers(2) % 3 + 5 = 8
rowSumOddNumbers(1) // 1
rowSumOddNumbers(2) // 3 + 5 = 8

Solutions

👴 C

#include <inttypes.h>

uint64_t rowSumOddNumbers(uint32_t n)
{
    uint32_t row = 1;
    uint64_t num = 1, res = 0;

    for(;row!=n;row++)
      num+=2*row;

    for(int i = 0; i < n; ++i, num+=2)
        res+=num;

    return res;
}

Last updated