Opdracht 3.1
Een priemgetal is een natuurlijk getal dat groter is dan 1 en alleen door zichzelf en door 1 gedeeld kan worden.
Onderzoek of de getallen 15 en 17 priemgetallen zijn.
Noteer goed welke stappen je onderneemt om dit te achterhalen.
Wanneer ga je stoppen met controleren of het een priemgetal is?
Uitbreiding:
Zou je met je algoritme ook kunnen achterhalen of 6337 een priemgetal is?
Bij opdracht 3.1 zal je een aantal keren dezelfde stap(pen) doorlopen hebben.
Je bent waarschijnlijk beginnen kijken of 71 deelbaar is door 2, dan door 3, … enz.
Zou je dit in een algoritme plaatsen, dan gaat een gedeelte van dit algoritme doorlopen worden zolang er aan een conditie voldaan is.
Je zou bijvoorbeeld voor alle getallen van 2 tot 70 kunnen controleren of 71 door dit getal deelbaar is, maar je stopt als je een deler gevonden hebt.
Een mogelijk algoritme is:
1) getal <==15 of 17
2) deler <== 2
3) Zolang getal/deler geen rest heeft herhaal
· deler <== deler +1
· Als rest gelijk is aan 0 dan
4) Als deler gelijk is aan getal is
· Output: Priemgetal
Anders
· Output: Geen priemgetal
Hiernaast wordt getoond hoe en iteratie (soms ook loop genoemd) in een NSD voorgesteld .
het voorbeeld zijn instructies 1 tot/met 4 een sequentie die zal herhaald worden (iteratie) zolang de voorwaarde voldaan is.
De voorwaarde zal eerst getest worden vooraleer de instructies uitgevoerd worden. Het is dus mogelijk dat de lus niet doorlopen wordt.
Passen we dit toe op oefening 3.1;
Er zijn verschillende manieren om in Python een iteratie of loop te programmeren.
Wij beperken on in eerste instantie tot de while-loop.
while <conditie> :
<instructie 1>
<instructie 2>
....
De code "while" is gewoon het Engelse woord voor zolang, waarna de conditie volgt.
Hierna start het blok met instructies die gaat uitgevoerd worden, zolang de conditie vervuld is. Om dit aan te geven wordt er na de conditie een dubbele punt ( : ) geplaatst. De instructies van het blok die moeten herhaald worden, worden dan geïntendeerd (springen in).
Zetten we dit om naar Python code, dan krijgen we
# Priemgetallen
getal=int(input("Geef een natuurlijk getal in:"))
deler = 2
while getal/deler > getal//deler:
deler =deler+1
if deler == getal:
print("Priemgetal")
else:
print("Geen priemgetal")
Je kan aan een gebruiker wel zeggen waaraan een data moet voldoen, maar dat wilt niet steeds zeggen dat de gebruiker zich daaraan houdt.
Je gaat daarom moeten controleren of een input van de gebruiker voldoet aan de gestelde voorwaarden, en indien niet zo, vragen om opnieuw de data in te geven.
We gaan in de volgende opdracht eerst een script schrijven waarbij we de input niet gaan controleren, in de daaropvolgende opdracht gaan we dan een controle invoeren.
Opdracht 3.2
Schrijf een algoritme en een script dat aan de gebruiker vraagt een getal in te geven.
Geef alle delers van het getal.
Voorbeeld:
Opdracht 3.3
Herhaal opdracht 3.2, maar zorg er nu voor dat enkel een getal van 10 t/m 20 geaccepteerd wordt.
Opdracht 3.4
Laat de gebruiker een getal ingeven van 1 tot 10.
Laat de computer dan zoveel keren een getal genereren en print dit getal op het scherm
Met onderstaande code kan je de computer een willekeurig natuurlijk getal laten generen tussen de opgegeven getallen. In ons geval 1 en 6.
Je kan beginnen met deze code en dan aanvullen.
# Script om een getal van 1 t/m 6 te generen
# Importeer de random module
import random
x = random.randint(1,6)
# Vul hieronder de code zelf aan