Highest Common Factor Calculator
by Uzair bin Asim in Circuits > Software
1350 Views, 1 Favorites, 0 Comments
Highest Common Factor Calculator
a lot of my friends and kids i tutor have issues with finding the highest common factor (HCF) of any bunch of numbers. This is mostly because in my country education is really sub-standard. kids usually resort to rote learning and hard rules.
In this sense i created a program with which calculates HCF.
although this cannot actually be done by hand and there are even easier and simpler ways to get HCF i personally think that this is the most primitive, and hence the most basic of techniques. i hope people will be able to understand the nature of HCF.
the programming language i'm going to write in today is Microsoft studio 2010 in console mode
this is because it isn't so case sensitive and it is very user friendly thus perfect for an aspiring beginner.
Step 1:declaring the Variables
in any program when we want to store any form of data for manipulation we need to declare variables.Although there are many types in my program i've only used local variables.
it stores integral variables in the format
<p>Dim x As Integer</p>
this labels variable by the name "x" as an integeral data type
so in the program we have to declare these variables
Dim firstNum, secondNum, TEMP, HCF As Integer
i've basically stored for variables by the names of : firstNum,secondNum, TEMP, HCF
Storing the Variables
Once we've declared a variable we have to assign it a value otherwise it's useless.
to do this we make use of the "=" operator
but to have it read from the user we need a way for it to be entered. we use the "Console.ReadLine" function
this is a function of visual basic's console mode which reads a line typed into the console
the program goes like this;
firstNum = Console.ReadLine
we then do the same with the next variable
secondNum = Console.ReadLine
this stores two numbers for manipulation by the program
Comparing
next we compare two variables and check which one is smaller. we could use the larger number too but it would be useless to put excess load on the program. but if both variables are equal we can use either
to compare we use the if statements
<p>If <em>condition</em> Then<br><em>(action if condition is true)</em></p><p>ElseIf <em>condition</em> then</p><p><em>(action if condition is true)</em></p><p>End If</p>
so in effect it looks like this
<p>If firstNum < secondNum Then<br> TEMP = firstNum ElseIf firstNum > secondNum Then TEMP = secondNum</p><p> ElseIf firstNum = secondNum Then</p><p> TEMP = secondNum End If</p>
Finding HCF
in theory HCF is the highest integer by which all the given numbers can be individually divided by without leaving a remainder. or in a computer's senses a remainder of zero
in my program i keep dividing the numbers and increasing until i get the highest integer possible which divides all the numbers without leaving a remainder.
for this i will use a "for iteration loop"
the syntax goes:
<p>For i = <em>(any number)</em> to <i>(any number)</i> step <i>(incremental number)</i></p><p><em>(function)</em> Next</p>
since i cannot divide by 0 i will have to start from 1 and to the least number. this is because the HCF cannot be greater than any of the numbers. if you remember we stored the least number into variable 'TEMP'.
to compare the numbers we will use an if statement.
for this task we will also be using a special operator called the modulus operator
this returns the remainder from a division
its syntax is
(number) mod (divisor)
in other programming languages ,i.e. C++, mod may be replaced by the percentage sign '%'
so for our program we write
<p>For i = 1 To TEMP Step 1</p><p> If ((firstNum Mod i = 0) And (secondNum Mod i = 0)) Then</p><p> HCF = i End If Next</p>
we store the numbers into variable "HCF"
every time a greater variable is found HCF is overwritten
if i if a factor of both numbers then it is stored in to variable HCF
Displaying Output
to display output on console screen, we use the command "console.write()" or "console.writeline()"
an important rule of the thumb is that written words must be enclose in apostrophes (""). Variables do not need to be enclosed in apostrophes
we can also make use of " & " operator to join lines remember to place a space on either sides of the & symbol
thus the program goes
<p>Console.WriteLine("The highest common factor is " & HCF)</p>
Alas the computer usually doesn't wait for the user unless told. so we add another line of program to allow for the user to read the result.
<pre><p>Console.WriteLine("PRESS ANY BUTTON TO EXIT")</p><p>Console.ReadKey()</p> <br>
For Ease
this is my version of the programming with comments for aid.
<p>Module Module1<br> Sub Main()</p><p> 'in any program we must declare variables Dim firstNum, secondNum, TEMP, HCF As Integer ' "As Integer" symbolizes that the nature of data for these variables are integers</p><p> 'first we inform the user about the instructions Console.WriteLine("enter two numbers for highest common factor") 'then we prompt the user to enter a number Console.WriteLine("enter first number") 'we store the digit in to a variable firstNum firstNum = Console.ReadLine 'then we prompt the user to enter a second number Console.WriteLine("enter second number") 'similarly we store that too, but in a different variable ' we dont want the first one to be overwritten secondNum = Console.ReadLine</p><p> 'we compare which one is larger and store it into a Temporary storage "TEMP" If firstNum < secondNum Then TEMP = firstNum ElseIf firstNum > secondNum Then TEMP = secondNum</p><p> 'in the clause underneath we stored a value into the TEMP even though the first and second numbers were equal 'this is because we needed the "highest" number of the either whatever it may be.</p><p> ElseIf firstNum = secondNum Then TEMP = secondNum End If</p><p> 'here is where the programming really begins 'the mod function divides the integer by a number and returns the remainder 'this is useful, in this way we can check by which numbers are the remainders zero</p><p> 'here we use a "FOR ITERATION LOOP" to do the job 'we create a variable 'i' and increase it by 1 after every loop</p><p> For i = 1 To TEMP Step 1 '"Step 1" shows that there is an increment of 1 after every loop</p><p> 'as you can see we also used an AND function 'this is because we only needed numbers which divides both variables giving remainder zero</p><p> 'another important note is that we cannot begin i at 0 'this is because anything divided by 0 may lead to infinity If ((firstNum Mod i = 0) And (secondNum Mod i = 0)) Then</p><p> 'we store the numbers into variable "HCF" ' every time a greater variable is found HCF is overwritten HCF = i End If Next</p><p> Console.Clear() ' this command clears anything written on the console screen</p><p> Console.WriteLine("highest common factor = " & HCF) 'this command displays message on console screen</p><p> 'the commands underneath allows for exiting the console screen Console.WriteLine() Console.WriteLine("PRESS ANY BUTTON TO EXIT") Console.ReadKey()</p><p> 'P.S 'while programming, as long as you do not ruin the syntaxes ' you are free to put spaces, tabs or empty lines to make the program look less messy</p><p> End Sub</p><p>End Module</p>