Zeef van Eratosthenes

Vergelijkbare documenten
Informatica: C# WPO 7

OEFENINGEN PYTHON REEKS 6

Getaltheorie I. c = c 1 = 1 c (1)

POD1 - Hoofdstuk 1: Inleiding

1. REGELS VAN DEELBAARHEID.

Memoriseren: Een getal is deelbaar door 10 als het laatste cijfer een 0 is. Of: Een getal is deelbaar door 10 als het eindigt op 0.

Oefening: Markeer de getallen die een priemgetal zijn.

1.5.1 Natuurlijke, gehele en rationale getallen

2 n 1. OPGAVEN 1 Hoeveel cijfers heeft het grootste bekende Mersenne-priemgetal? Met dit getal vult men 320 krantenpagina s.

Extra oefeningen hoofdstuk 4: Deelbaarheid

Getallenleer Inleiding op codeertheorie. Cursus voor de vrije ruimte

Worteltrekken modulo een priemgetal: van klok tot cutting edge. Roland van der Veen

1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12

Arrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma:

Programmeermethoden NA. Week 5: Functies (vervolg)

OPLOSSINGEN VAN DE OEFENINGEN

2.1 Bewerkingen [1] Video Geschiedenis van het rekenen ( 15 x 3 = 45

Informatica: C# WPO 10

PYTHON REEKS 2: FUNCTIES. Mathias Polfliet

handleiding ontbinden

Kennismaken Greenfoot

De tiendeligheid van ons getalsysteem

Vedische wiskunde: snel vermenigvuldigen

PG blok 4 werkboek bijeenkomst 4 en 5

Programmeermethoden NA. Week 5: Functies (vervolg)

2. Ga voor volgende relaties na of het al dan niet functies, afbeeldingen, bijecties, injecties, surjecties zijn :

Objectgeoriënteerd Programmeren: WPO 1

2.1 Bewerkingen [1] Video Geschiedenis van het rekenen ( 15 x 3 = 45

algoritmiek - antwoorden

VAKANTIEWERK WISKUNDE

7 Deelbaarheid. 7.1 Deelbaarheid WIS7 1

x x x

Programmeren (1) Examen NAAM:

Universiteit Gent. Academiejaar Discrete Wiskunde. 1ste kandidatuur Informatica. Collegenota s. Prof. Dr.

Examen Datastructuren en Algoritmen II

Doe eenvoudige opgaven zonder een rekenmachine. XX. Gebruik een rekenmachine bij moeilijke opgaven. Controleer de berekening door te schatten.

Software Design Document

Pascal uitgediept Data structuren

Meer Blokken. 1. Dit is een functie genaamd Maximum, die twee argumenten heeft: number1 en number2.

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.

Dossier 3 PRIEMGETALLEN

Volgorde van de bewerkingen.

Geldwisselprobleem van Frobenius

Objectgeoriënteerd Programmeren: WPO 1

Hieronder volgt een programma met een subroutine die vanaf verschillende plaatsen wordt opgeroepen.

Hoofdstuk 6 : DEELBAARHEID

Hoofdstuk 6 : DEELBAARHEID

Programmeren in Java les 3

REKENVAARDIGHEID BRUGKLAS

Tips Wiskunde Kwadratische vergelijkingen: een uitgebreid stappenplan

Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:

Tussentoets Programmeren en genomics, 8CA10, versie A 17 maart 2017, u.

Informatica: C# WPO 9

Tentamen Grondslagen van de Wiskunde A Met beknopte uitwerking

Examen Datastructuren en Algoritmen II

Opgaven Eigenschappen van Getallen Security, 2018, Werkgroep.

Een spoedcursus python

Informatica: C# WPO 8

Het Breukenboek. Leer beter rekenen met breuken Voor leerlingen vanaf het voortgezet onderwijs. Ingrid Lundahl

Universiteit Utrecht Faculteit Wiskunde en Informatica. Examen Optimalisering op maandag 18 april 2005, uur.

[15] Variabelen in functies (of: een woordje over scope)

Uitwerkingen oefeningen hoofdstuk 1

Algoritmen en programmeren: deel 2 - basis

10 Meer over functies

Opgeloste en onopgeloste mysteries in de getaltheorie

Aanvullende tekst bij hoofdstuk 1

Klikt u op dan komt er een scherm of u dit bestand wilt of

Wiskunde - MBO Niveau 4. Eerste- en tweedegraads verbanden

Public Key Cryptography. Wieb Bosma

Rekenkundige rijen. WISNET-HBO update aug. 2013

HANDMATIG WORTELTREKKEN

Machten van natuurlijke getallen G wedstrijden. 4 2 (ieder lid speelt tegen vier tegenstanders = 4 4).

WISKUNDE 1. Aansluitmodule wiskunde MBO-HBO

Variabelen en statements in ActionScript

Toetsvoorbereiding Informatica HAVO/VWO 5 (T51) Programmeren met Python II. Duur: 70 minuten Datum: sept 2018

Breuken som en verschil

Afspraken hoofdrekenen eerste tot zesde leerjaar

1. Rekenen en formules

Informatica: C# WPO 11

Les C-01: Algoritmen David Lans

Examen Datastructuren en Algoritmen II

Objectgeoriënteerd Programmeren: WPO 2

Info-books. Toegepaste Informatica. Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) AL20. Jos Gils Erik Goossens

Beknopte handleiding voor Derive 5.0 for Windows

Hoofdstuk 1. Inleiding. Lichamen

Practicum Programmeerprincipes

Ouderbijeenkomst Rekenen. Optellen. Wat gaan we doen? Ga ik te snel, geef het aan Ga ik te langzaam, geef het aan. Basisvaardigheden (+, -, x, :)

vandaag is Annie twee jaar jonger dan Ben en Cees samen

PRIME CLIMB. Speeltijd Ongeveer 10 minuten per speler.

regel: de som van de cijfers op de even plaatsen min de som van de cijfers op de oneven plaatsen moet 0 of 11 zijn.

AFO Leveranciers

priemgetallen en verzamelingen Jaap Top

DomJudge-Practicum. Open Dag UU

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen

Investeringsselectie met de gebruikelijke krabbels op het whiteboard

Transcriptie:

Zeef van Eratosthenes [ Waarschuwing! Teveel wiskunde kan schade veroorzaken aan jouw interesse voor de informatica. ] De Zeef van Eratosthenes (ca. 240 v. Chr.) is een methode waarmee je alle priemgetallen kan bepalen tot aan een zekere bovengrens. Om bijvoorbeeld alle priemgetallen te bepalen tot aan 1000, ga je als volgt te werk: Schrijf alle getallen tussen 2 en 1000 op een blad papier. Schrap alle veelvouden van 2. Het eerste getal dat nu nog niet geschrapt is, is 3. Schrap daarom alle veelvouden van 3. Het eerste getal dat nu nog niet geschrapt is, is 5. Schrap nu alle veelvouden van 5,... We hebben nu reeds 3 priemgetallen gevonden (2, 3 en 5). Door deze methode voldoende lang vol te houden, vinden we uiteindelijk alle priemgetallen tussen 0 en 1000. 2015 Kris Coolsaet c Universiteit Gent (... )

Ontwerp een klasse Zeef waarmee je bovenstaande techniek kunt toepassen om alle priemgetallen te bepalen tussen 0 en een gegeven bovengrens. Deze klasse moet voldoen aan de volgende specificaties: De bovengrens wordt meegegeven bij de constructie van het Zeef -object. De klasse heeft een methode bereken() die de berekeningen uitvoert. Nadat de berekeningen zijn uitgevoerd, kan je met behulp van de methode ispriem(getal) kijken of het opgegeven getal een priemgetal is (je mag veronderstellen dat dit getal kleiner is dan de vroeger opgegeven bovengrens). Er is ook een methode print die alle berekende priemgetallen afdrukt, netjes naast elkaar, 10 getallen per lijn, en een methode aantalpriem die bepaalt hoeveel priemgetallen er zijn in dit bereik. Het ligt voor de hand om het blad papier voor te stellen als een lijst of een tabel (array). Een element schrappen (weghalen) uit een lijst of tabel is echter een dure operatie, zeker wanneer een tabel honderdduizenden elementen bevat. Je zal dus een andere techniek moeten gebruiken. Bezint voor ge begint! Verdere tips voor een goede oplossing: Om de opeenvolgende veelvouden van een getal te bepalen, hoef je niet te vermenigvuldigen. Wat is het laatste getal waarvoor je de veelvouden nog dient te schrappen?

StockManager [ Dit zijn oefeningen 4.56-4.60 uit het boek.] Open het project products en werk de klasse StockManager in de volgende oefeningen verder uit. StockManager slaat objecten van het type Product op in een ArrayList. De methode addproduct ervan voegt al een product toe aan de collectie, maar de methodes delivery, findproduct, printproductdetails en numberinstock moeten nog verder worden uitgewerkt. Elk verkocht product wordt voorgesteld door een instantie van de klasse Product, die een productnummer, de naam van het product en het aantal van dat product in voorraad bevat. De klasse Product definieert de methode increasequantity om toenames van de voorraad van het product te registreren. De methode sellone registreert dat er van het product een exemplaar verkocht is, door het veld quantity 1 te verlagen. We hebben de klasse Product al voor je gemaakt, en het is niet nodig om die verder aan te passen.

Schrijf eerst de methode printproductdetails om ervoor te zorgen dat je de collectie producten kunt bekijken. Druk informatie over elk Product-object af door de methode tostring ervan aan te roepen. Schrijf de methode findproduct. Deze methode moet in de collectie producten zoeken naar een product waarvan het veld id overeenkomt met het ID-argument van deze methode. Als de methode in de collectie een overeenkomstig product vindt, moet de methode dit product retourneren. Als er geen overeenkomstig product te vinden is, moet de methode null retourneren. De methode findproduct verschilt van de methode printproductdetails, omdat deze niet noodzakelijkerwijs elk product in de collectie hoeft te onderzoeken voordat het product gevonden wordt. Als bijvoorbeeld het eerste product in de collectie het gezochte ID heeft, kan de methode eindigen en direct het eerste product object retourneren. Aan de andere kant is het ook mogelijk dat het gezochte ID helemaal niet voorkomt in de collectie. In dat geval zal de methode de hele collectie moeten onderzoeken, zonder echter een product te kunnen retourneren. In dit geval moet de methode de waarde null retourneren. Bij het zoeken naar een overeenkomstig product, zul je de methode getid voor een Product-object moeten aanroepen. Schrijf de methode numberinstock. Deze methode moet een product met een overeenkomend ID in de collectie zoeken en de huidige voorraad van dat product retourneren. Als er geen product met een overeenkomend ID aanwezig is, moet

de methode 0 retourneren. Deze methode is relatief eenvoudig te construeren zodra je de methode findproduct hebt uitgewerkt. De methode numberinstock kan bijvoorbeeld de methode findproduct aanroepen om het product te zoeken en vervolgens de methode getquantity het resultaat laten retourneren. Vergeet echter niet om ook in een oplossing te voorzien voor het geval er geen product aanwezig is dat aan het criterium voldoet. Schrijf de methode delivery op een vergelijkbare manier als de methode numberinstock. De methode delivery moet in de lijst producten het product met een bepaald ID vinden en vervolgens de methode increasequantity aanroepen. Uitdaging Schrijf een methode in de klasse StockManager om informatie over alle producten af te drukken waarvan het voorraadniveau onder een bepaalde waarde ligt (die als parameter aan de methode wordt doorgegeven). Pas de methode addproduct zodanig aan dat het niet mogelijk is om een nieuw product aan de lijst producten toe te voegen als het nieuwe product hetzelfde ID heeft als een product dat al in de lijst aanwezig is. Voeg aan de klasse StockManager een methode toe die een product zoekt op basis van de naam in plaats van op basis van het ID. public Product findproduct(string name)