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()