De 1ste 100 PriGetallen

Status
Niet open voor verdere reacties.

zettekakkers

Gebruiker
Lid geworden
21 jul 2011
Berichten
134
mijn code geeft de priemgetallen kleiner dan 100 weer maar hou verander ik dit naar gewoon de 1ste 100 priemgetallen :s

[CPP]
Dim intEindGetal, intPriemGetal, i As Integer
Dim blnPriem As Boolean = False

intPriemGetal = 2
intEindGetal = 100

'zorgt er voor dat het laaste priemgetal kleiner blijft dan 100
Do While intPriemGetal < intEindGetal

If intPriemGetal = 2 Or intPriemGetal = 3 Then
blnPriem = True
Else
'i gaat van 2 tot het priemgetal maar mag niet door zichzelf delen dus -1
For i = 2 To (intPriemGetal - 1)

'als de restdeling =0
If intPriemGetal Mod i = 0 Then
'dan geen priemgetal
blnPriem = False
Exit For
Else
'dan mogelijk wel een priemgetal
blnPriem = True
End If
Next
End If
'Als het een priemgetal is word het bij het vorige getal bij geschreven
If blnPriem = True Then
txtPriemgetallen.Text &= intPriemGetal & vbCrLf
End If

intPriemGetal += 1
Loop
[/CPP]
 
vrij logisch, je zegt: Do While intPriemGetal < intEindGetal

dit houdt in dat de loop doorgaat zolang het priemgetal kleiner is dan 100, maar je hebt er geen counter ingezet...

dit kan je oplossen door een nieuwe int te maken die je counter noemt; intCounter = 0

bij elke loop doe je counter +1; dan zet je onder intPriemGetal += 1 de code intCounter += 1


in de Do While intPriemGetal < intEindGetal verander je intEindGetal door intCounter

op die manier tel je dus bij elke loop +1 en als je bij de 100 komt stopt hij.
 
Laatst bewerkt:
Zo;

PHP:
        Dim PriemGetallen As New List(Of Integer)(New Integer() {2, 3})
        Dim a As Integer = 4
        Dim w As Boolean = False
        While PriemGetallen.Count < 100
            For i As Integer = 2 To a - 1
                If a Mod i = 0 Then w = True
            Next

            If Not w Then PriemGetallen.Add(a)
            a += 1
            w = False
        End While

        For Each getal As Integer In PriemGetallen
            Console.WriteLine(getal & " ")
        Next
        Console.Read()

Deze code levert dezelfde getallen als hier: http://metricconversion.biz/list-of-first-100-prime-numbers.html
 
ik heb het probleem ondertussen zelf al gevonden :D

gewoon mijn
Do While intPriemGetal < intEindGetal vervangen door Do Until intCounter = 100

dan mijn
If blnPriem = True Then
txtPriemgetallen.Text &= intPriemGetal & vbCrLf
End If
veranderen naar

Do Until intCounter = 100
If blnPriem = True Then
txtPriemgetallen.Text &= intPriemGetal & vbCrLf
intCounter += 1
Exit Do
End If
Exit Do
Loop
intPriemGetal += 1

want bij Example ging het gewoon de 1ste 100 getallen

Opgelost :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan