Ik ben momenteel met Excel aan 't spelen om een algoritme te verzinnen waarmee ik van een getal in bijvoorbeeld veld A1 kan bepalen of het priem is of niet. Zo ja, moet dit in factoren worden ontbonden.
Even voor de goede orde: een priemgetal is dus een positieve integer dat enkel door zichzelf en door 1 gedeeld kan worden.
Voorbeelden van de eerste priemgetallen: 2, 3, 5, 7, 11, 13, 17, ...
Alle even getallen >2 vallen automatisch af, omdat deze door 2 deelbaar zijn.
Ook alle getallen die op 5 eindigen (afgezien van 5 zelf) vallen af, want ze zijn deelbaar door 5.
Ik heb al ingevoerd hoe ik de bovengenoemde niet-priemgetallen af laat vallen, maar nu moet ik dus voor alle overgebleven 'mogelijke' priemgetallen uitzoeken of ze positieve integers als deler hebben.
Nu had ik het volgende verzonnen, maar de grote vraag is: kan ik het met Excel doen?
IF(INT(A1:(1+Z))=(A1:(1+Z));"Priemgetal";"Geen priemgetal")
Z mag alleen bestaan op [1,sqrt(A1-1)], om het aantal keren 'proberen' zo klein mogelijk te houden.
Is er iemand die misschien weet hoe ik Excel alle getallen op het genoemde domein uit kan laten proberen?
Je zult vast denken: dit is toch vrij simpel te doen in VB(A)? Klopt, ik had al het volgende functietje gevonden op usenet:
...maar aangezien mijn kennis op het gebied van echt programmeren zeer dicht bij 0 ligt, doe ik het liever in Excel, wat ik wel min of meer beheers.
Alvast bedankt!
Even voor de goede orde: een priemgetal is dus een positieve integer dat enkel door zichzelf en door 1 gedeeld kan worden.
Voorbeelden van de eerste priemgetallen: 2, 3, 5, 7, 11, 13, 17, ...
Alle even getallen >2 vallen automatisch af, omdat deze door 2 deelbaar zijn.
Ook alle getallen die op 5 eindigen (afgezien van 5 zelf) vallen af, want ze zijn deelbaar door 5.
Ik heb al ingevoerd hoe ik de bovengenoemde niet-priemgetallen af laat vallen, maar nu moet ik dus voor alle overgebleven 'mogelijke' priemgetallen uitzoeken of ze positieve integers als deler hebben.
Nu had ik het volgende verzonnen, maar de grote vraag is: kan ik het met Excel doen?
IF(INT(A1:(1+Z))=(A1:(1+Z));"Priemgetal";"Geen priemgetal")
Z mag alleen bestaan op [1,sqrt(A1-1)], om het aantal keren 'proberen' zo klein mogelijk te houden.
Is er iemand die misschien weet hoe ik Excel alle getallen op het genoemde domein uit kan laten proberen?
Je zult vast denken: dit is toch vrij simpel te doen in VB(A)? Klopt, ik had al het volgende functietje gevonden op usenet:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| Function prime(num) Dim j, k, remain As Integer j = Int(num) If j <> num Then prime = "NonInt" Exit Function End If j = Sqr(num) For k = 2 To j remain = num Mod k If remain = 0 Then prime = "NonPrime" Exit Function End If Next k prime = "Prime" End Function |
...maar aangezien mijn kennis op het gebied van echt programmeren zeer dicht bij 0 ligt, doe ik het liever in Excel, wat ik wel min of meer beheers.
Alvast bedankt!