you still have not fixed the main sub routine
and the test function is being called outwide the loop
we will enevtually get rid of the junk
and end up with a cleaner piece of code
the problem her that too many people are making odd ( unfortunately not helpful comments)
the word arg is in the brackets of the declaration of the function isprime()
so it is a value passed to the function and used within it to do what ever task you have specified!
when we call the function isprime(arg) we use the variable that we want to test
in your case the variable is the X thing from the loop
we want to test x to see if it is a prime
the test is exhaustive as the definition of a prime is a value that can be devided by itsself and 1 only!
so lets look at you atempt at ISPRIME()
my comments are true for the vast number of languages that support function, true some of them use return <something> to send back the result, but vb does not ( although i'm not sure about .net)Code:Public Function isprime(ByVal arg) As Boolean Dim n As Integer ' why have you introduced n here - do you think it is the upperlimit ' if we needed it I would have suggested passing more than one argument Dim ReturnValue As Boolean = True ' what is the purpose of this declaration - is it to allow us to pass the answer back? ' answers (returned values) are returned in the name of the function ' so when we are ready the result will be isprime=<something> For F = 2 To n ' ok so now your cooking you are about to test from 2 to n the upper limit ' whoops this function was never passed the upper limit ' why would you pass 50 to test and see if lets say 9 was a prime number? If n Mod F = 0 Then ' right a test , good thinking, but what are you testing? ' i see its that fictitious upperlimit again ( aargh!) ReturnValue = False 'yup thats the right output, but in the wrong place 'we don't have a function called returnvalue 'its called ISPRIME Exit For 'and yes cancel any more test once devisable it cannot be prime End If Next Return ReturnValue 'this is not need as you will have already filled the variable with the result 'the function is waiting to end End Function
anyway...
good attempt now lets fix it
hope that makes more senseCode:Public Function isprime(ByVal arg) As Boolean isprime = True ' the default state, all numbers are prime unless they are not ' no need for "if else" For F = 2 To arg-1 ' arg is the value you want to test we know it devides itself ' can anything smaller devide it If arg Mod F = 0 Then ' if a lesser value can devide it isprime = False 'set the return value to false (this arg is not a prime) Exit for ' you might be able to "exit function" here as well i cant test iam on wrong machine! End If Next ' get the next smaller value to test arg with ' the isprime return value was set true to start and false when arg was devisable End Function
now for the final bit cleaning up the main sub
now is that crystal clear nowCode:Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim n As Integer 'variable for the lower value Dim m As Integer 'variable for the upper value n = InputBox("Enter lower limit") ' ok lets getvthe first value m = InputBox("Enter Upper limit") ' ok lets get the next value ' good thats 2 value done, but no tests yet ' the actual output of the inboxes will be strings but the typing of n and m will cast them to integers If n < 2 Then msgbox("the lower limit is too small - start again") Exit Sub End If If m > 50 Then msgbox("the upperlimit is too big - start again") Exit Sub End If If n Mod 2 = 0 Then n = n + 1 'this ensures your lowerlimit is odd to start from 'replacement loop ' Remember, we only bother to check odd numbers For x = n To m Step 2 ' this for does from an odd lowerlimit then +2,+4,+... up to the last odd number before the upperlimit If isprime(x) Then List.additem(x) 'if the result of a new function called isprime is true then store the x that was tested in the listbox Next ' loop some more End Sub 'put isprime() function definition here End Class
you may have to fix syntax
i am writting this in text only
dont have a mcchine here to try anything on
sorry
hope this has helped
please rate this and my other posts if the have helped
ask even if there is the tiniest bit you don't understand
nice to see your a girly programmer
sorry if the he hurt but its english for you dont know the gender
here to talk




Reply With Quote