Home > Software design >  The sum of the first natural 100 numbers
The sum of the first natural 100 numbers

Time:10-18

new to coding, Quick Homework problem Im having trouble on. I must find the sum of the first 100 natural numbers. 1 2 3 4, and so on. While using "while loops".

This is what I have so far.

    Dim sum, count As Integer
    Const num As Integer = 1

    Console.WriteLine("The Sum of the first 100 natural numbers is:") 

 

    count = num   1

    While count <= 100 
        Count = num   count
        
    End While
        Sum = count

    Console.WriteLine("{0}", sum) 
    Console.ReadLine()

I know for a fact the math and while loop is incorrect, but Im not sure how to fix it. I keep getting 101 as my answer.

CodePudding user response:

The issue is your initialization. Do this:

Const num As Integer = 0

CodePudding user response:

While count <= 100 
    num  = count
    count  = 1        
End While
    Sum = num

CodePudding user response:

You do not need the num constant and the line: count = num 1

 While count <= 100
    sum  = count
    count  = 1
 End While

CodePudding user response:

I know you are learning and the solution must use a While loop but for fun see what you can do in 2 lines of code.

    Dim arrNumbers = Enumerable.Range(1, 100).ToArray
    Console.WriteLine(arrNumbers.Sum)

CodePudding user response:

Since your question title asked for sums of all [1 - 100] as well as the evens and odds, here is some LINQ for each one

Dim sum = Enumerable.Range(1, 100).Sum()
Dim sumEvens = Enumerable.Range(1, 100).Sum(Function(i) If(i Mod 2 = 0, i, 0))
Dim sumOdds = Enumerable.Range(1, 100).Sum(Function(i) If(i Mod 2 = 0, 0, i))
Console.WriteLine($"Sum: {sum}, Sum evens: {sumEvens}, Sum odds: {sumOdds}")

Sum: 5050, Sum evens: 2550, Sum odds: 2500

Enumerable.Range(1, 100) creates your sequence of all [1 - 100]. Call the LINQ function Sum to simply get the sum, or you can pass a lambda function to Sum to transform the numbers. Use Mod to select evens or odds. The method above sets odds to 0 for the evens, and vice-versa for the odds.

An alternative to this method of transforming the sequence is to use Where to select only even numbers then Sum, which may be more readable.

Dim sumEvens = Enumerable.Range(1, 100).Where(Function(i) i Mod 2 = 0).Sum()
  • Related