1 van 1

priemgetallen python

Geplaatst: di 01 nov 2016, 16:32
door eraertslau
Hallo iedereen,
 
Ik heb een vraag in verband met een oefening die gemaakt moet worden in python. De bedoeling is dat er een functie controleert of het gegeven getal een priemgetal is of niet. Deze geeft dan als resultaat 'True' indien het een priemgetal is of 'False' in het andere geval. De functie wordt herhaald tot de gebruiker 'einde' ingeeft.
Ik heb eerst een programma proberen op te stellen dat nagaat of het opgegeven getal een priemgetal is, maar dit geeft al een fout antwoord als ik het bv. het niet-priemgetal 8 ingeef...
Kan iemand mij misschien verder helpen?
Bedankt!
 
 
waarde = int(input("Geef een getal in : "))
i = waarde-1
 
   if(waarde % i == 0) and (i>0):
       print("het is geen priemgetal")
       i = i-1
   else:
      print("het is wel een priemgetal")

Re: priemgetallen python

Geplaatst: di 01 nov 2016, 17:14
door Safe
Wat is een priemgetal?
Je test helemaal geen delers ...

Re: priemgetallen python

Geplaatst: vr 10 mar 2017, 17:32
door keyzplayer
Safe schreef: Wat is een priemgetal?
Je test helemaal geen delers ...
Jawel, er wordt de modulus operator gebruikt:
waarde % i     geeft de rest van      waarde/i
 
i is de deler
 
Het gebruikte algorithme is echter niet goed.
 
Als ik het programma naloop met waarde = 8, dan wordt i gelijk gesteld aan 8-1 = 7
Vervolgens kom je in het IF statement terecht
waarde % i is dan 8 % 7 = 0.142...
en i is inderdaad nog groter dan 0
De conditie in het IF gedeelte is dus niet waar dus gaat het ELSE gedeelte in werking en geeft dus aan dat 8 een priemgetal is.
 
Een priemgetal is >1 en alleen deelbaar door zichzelf en 1.
Dat wil zeggen dat de expressie WAARDE % i alleen gelijk mag zijn aan 0 als i gelijk is aan waarde of als i gelijk is aan 1.
Dat is altijd zo.
Je moet dus testen of de expressie WAARDE % i gelijk is aan 0 voor getallen die kleiner zijn dan WAARDE en groter zijn dan 1. Kom je die situatie niet tegen is het een priemgetal.

Re: priemgetallen python

Geplaatst: vr 10 mar 2017, 18:36
door physicalattraction
Je beredenering klopt, maar je code volgt die beredenering niet. Je test alleen of het getal deelbaar is door waarde-1, maar je hebt geen loop waarin je alle getallen checkt.