Priemgetal of niet

Status
Niet open voor verdere reacties.

paulebal

Gebruiker
Lid geworden
16 sep 2008
Berichten
17
hoe bepaal ik of een getal een priemgetal is of niet?

volgens mij moet de macro er zo uit komen te zien. ik weet wat ik fout doe hier, want nu is x ook waar voor niet priemgetallen. kan iemand mij iets verder op weg helpen?



Sub priem()

Dim getal As Integer
Dim x As Boolean

getal = InputBox("vul een getal in")

If getal Mod getal = 0 Then
If getal Mod 1 = getal Then
x = True

Else: x = False
End If
End If

MsgBox x

End Sub
 
Getal MOD Getal is altijd 0
aangezien elk getal gedeeld door zichzelf een restwaarde van 0 heeft

Een getal is ook altijd deelbaar door 1... dus die hoeft ook niet.

Je moet testen of een getal deelbaar is door een ander getal dan 1 of zichzelf. lukt dat niet dan is het een priem getal. daarbij hoef je alleen te kijken naar getallen lager dan zichzelf wat ook een priemgetal is.

En om alle priemgetallen tot duizend te kunnen vinden hoef je alleen maar een modulo te doen met alle priemgetallen tot 31

Dus: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31
 
Laatst bewerkt:
antwoord bijna

ik heb nu de macro gemaakt die alle priemgetallen berekend. maar nu moet ik em nog veranderen zodat ik het getal invul en dan moet er aangegeven worden of het een priemgetal is


Sub priem()
Dim getal As Integer, deler As Integer, tel As Integer
Dim resultaat As Single, priem As Boolean
tel = 1: getal = 1
Do While tel <= 100
getal = getal + 1

deler = 2
priem = True
Do While deler < getal And priem = True
resultaat = getal / deler
Do While resultaat > 0
resultaat = resultaat - 1
Loop
If resultaat = 0 Then
priem = False
End If
deler = deler + 1
Loop
If priem = True Then
MsgBox getal
tel = tel + 1
End If
Loop
End Sub
 
ik heb nu de macro gemaakt die alle priemgetallen berekend. maar nu moet ik em nog veranderen zodat ik het getal invul en dan moet er aangegeven worden of het een priemgetal is

Hé Paulebal. Dat is weer een tijd geleden:D:p
Ik heb naar aanleiding van je vorige bericht heb ik de macro nogal gewijzigd.
De belangrijkste wijziging is onder meer dat de macro stopt als de deler groter is dan de helft van het getal.

Code:
Sub priem()
Dim getal As Integer, deler As Integer, tel As Integer
Dim resultaat As Single, priem As Boolean
IPB = InputBox("Geef een getal.", "Geef getal")
deler = 2
priem = True
If IsNumeric(IPB) Then
    While deler <= IPB / 2
        If IPB Mod deler = 0 Then
            priem = False
        End If
        deler = deler + 1
    Wend
End If
MsgBox priem
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan