Check whether the Given Number is Armstrong/Strange or Not in VB
Armstrong Numbers is also known as Strange Numbers. Because these kind of numbers are very strange in number system. So programming Armstrong numbers are really funny and interesting.
What is Armstrong Numbers?
These are the numbers, if we take sum of its individual digits with power of number of digits, then result will be same number.
Example:
153
Here number of digit is 3
Then sum of digit with power of number of digit is
1^3 + 5^3 + 3^3 => 1 + 125 + 27 = 153 (Again original number)
8208
Here number of digit is 4
So
8^4 + 2^4 + 0^4 + 8^4 => 4096 + 16 + 0 + 4096 = 8208
All one digit numbers are Armstrong numbers. That is 1,2,3,4…. 9
2^1 = 2
3^1 = 3
9474
5 54748,
6 548834
7 1741725, 4210818, 9800817, 9926315
8 24678050, 24678051, 88593477
Other examples are:
370, 371, 1634, 9474, 54748, 92727, 93084, 548834, 1741725, 4210818, 9800817, 9926315, 24678050, 24678051, 88593477 etc … but very large, rare and strange
Let us see how to write a Visual studio.Net program to check whether the given number is Armstrong or not.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim num As Integer = 0
Dim rmd As Integer = 0
Dim sum As Integer = 0
Dim orginal As Integer
Dim tempNum As Integer
Dim count As Integer = 0
num = TextBox1.Text
orginal = num
tempNum = num
While tempNum <> 0
count = count + 1
tempNum = Math.Floor(tempNum / 10)
End While
While num > 0
rmd = Math.Floor(num Mod 10)
num = Math.Floor(num / 10)
sum = sum + Math.Pow(rmd, count)
End While
If sum = orginal Then
MessageBox.Show(“Armstrong”)
Else
MessageBox.Show(“Not Armstrong”)
End If
End Sub
At first a loop counts the number of digits and power the individual digits with number of digit and sum it. Finally check the given number with original number. If both are equal then that number should be an Armstrong number.
Math.Floor used to avoid rounding numbers. If we don’t use this function, then 4.2 consider as 4 and 4.6 consider as 5.
Program using Function:
Public Class windowsfn
Dim original As Integer
Dim sum As Integer = 0
Dim rmd As Integer = 0
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim number As Integer
Dim rmd As Integer = 0
Dim tempNum As Integer
Dim count As Integer = 0
number = TextBox1.Text
orginal = number
tempNum = number
While tempNum <> 0
count = count + 1
tempNum = Math.Floor(tempNum / 10)
End While
amscheck(number, count)
End Sub
Private Sub amscheck(ByVal num, ByVal count)
sum = 0
While num > 0
rmd = Math.Floor(num Mod 10)
num = Math.Floor(num / 10)
sum = sum + Math.Pow(rmd, count)
End While
If sum = original Then
MessageBox.Show(“Armstrong Number”)
Else
MessageBox.Show(“Not an Armstrong Number”)
End If
End Sub
End Class
Note that, here we use integer as number data types. So we can’t check large digit number using this program.
Be First to Comment