Undervisningsopplegg – Finn primtallene

Dette undervisningsopplegget handler om primtall, og ideen er at vi skal liste ut primtallene vi finner opp til et angitt tall. F.eks finne primtallene opp til 1000. Defininsjonen på primtall er hele tall som kun er delelig med 1 og seg selv, altså vil det aldri bli hele tall som svar om en deler på et annet tall.

Skal en gjøre dette manuelt, og tallene begynner å bli store vil en bruke relativt lang tid på å finne ut om tallet er et primtall eller ikke. Selvfølgelig finnes det en rekke regler en kan bruke for å utelukke en del tall, men det er vanskelig å ha full kontroll.

La oss derfor lage et program i Scratch som vi kan bruke for å finne primtallene som finnes opp til et gitt tall.

Kompetansemål etter 8.trinn:
– utforske korleis algoritmar kan skapast, testast og forbetrast ved hjelp av programmering
– utforske og beskrive primtalsfaktorisering og bruke det i brøkrekning
– beskrive og generalisere mønster med eigne ord og algebraisk

Krav til programmet
Programmet skal spørre brukeren etter et heltall som er så langt brukeren vil vi skal finne primtall til, og deretter liste ut primtallene etterhvert som programmet finner det. Svaret skal presenteres for brukeren.

Steg 1 – Pseudokode
Når vi skal løse slike oppgaver med elevene er det en god ide å «skrible» på tavlen sammen med dem for å skape en forståelse av hva som skal gjøres. Pseudokoding gjør det lettere å få en oversikt over hva som skjer med et og et tall og hvordan vi enklest kan løse utfordringene. Samtidig gir det en rask oversikt over hvor vi trenger løkker og vilkår, samt hvilke variabler vi trenger.

Steg 2 – Spørre etter tall
Programmet skal spørre etter et heltall som er så langt brukeren ønsker å finne primtallene til. Det kan være primtallene opp til 100, 200, 1000 eller 10 000.

Steg 3 – Sette variabler
Svaret legger vi i en variabel, som vi skal bruke å kontrollere mot senere i programmet. I tillegg trenger vi en variabel som forteller hvor langt vi er kommet i testene, og en liste hvor vi lagrer primtallene.

Steg 4 – Foreta tester og finne primtallene
Vi skal nå i gang med å finne primtallene. Da er det veldig visuelt om en legger dette i en løkke som tester et og et tall. Vi begynner med det laveste primtallet, 2, som vi har satt i variabelen arb_tall. Deretter øker vi arb_tall med 1 for hver «runde» i løkken til vi har testet alle ønskede tall.

Inne i denne løkken må vi lage en ny løkke. Denne løkken skal teste om tallet i tester for primtall, er et primtall. Derfor må vi for hvert tall kjøre en rekke tester for å avgjøre om tallet er et primtall, og vi må teste på stigende tall for hver runde. Tallet vi skal teste på, legger vi i variabelen div_tall som vi øker for hver runde. ErPrimtall er en variabel vi setter til en (sant), for å indikere at det er primtall, og setter til null (usant) dersom det ikke er primtall.

Testen vi skal gjøre er å dele på stigende tall for å se om det bare kommer ut svar som er hele tall. Er det hele tall siden det da ikke er primtall og kan vi avslutte testen for og begynne på neste tall. Til denne oppgaven bruker vi en funksjon som heter modulo (forkortet mod). Denne funksjonen brukes å finne resten av et opprinnelig heltall etter en divisjon med et annet tall. Er denne resten null, er ikke tallet et primtall.

Steg 5 – Bygge listen
Dersom variabelen erPrimtall kommer ut som sant (verdien 1), er tallet et primtall, og vi kan legge tallet inn i listen over primtall.

Alt legges sammen inn i løkken, og vi vil få en løkke som ser slik ut.

Steg 6 – Brukerinteraksjon
Gi informasjon til brukeren om hvordan programmet virker. Teksten kan legges på bakgrunnen som vises.

En ferdig versjon av programmet kan sees her: https://scratch.mit.edu/projects/417097881

Steg 7 – effektivisering av koden
Koden i dette programmet slik det er presentert, er ikke spesielt effektiv når vi tester på større mengder tall. Derfor skal vi utnytte at vi ikke trenger å sjekke videre på et tall, om det allerede er funnet ut at det ikke er et primtall. Da kan vi avslutte testen på det tallet, og gå videre til neste tall.

Differensiering
La brukeren mulighet til å velge et intervall en skal sjekke for primtall, f.eks mellom 100 og 500.
Fortell brukeren hvor mange primtall som er plukket ut.

Kommentarer er stengt.

Blogg på WordPress.com.

opp ↑

%d bloggere like this: