Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Læringsmål:

  • Filbehandling   

Pensum:

  • Kap 7

...

a) 

Skriv en funksjon som returnerer True om parameteren a er delelig med b. Hint: En modulo-operasjon (mod(a,b)) blir brukt i informatikk og i matematikk til å finne resten av et opprinnelig heltall etter en divisjon med et annet tall. Eks.: mod(5,2) = 1

b)

Lag funksjon med en for løkke som itererer fra b = 2,3,...,a-1 og bruker funksjonen fra forrige oppgave for å sjekke om a det er delelig med b. Om de er delelige avslutter du og returnerer 0. Ellers skal du returnere 1.

c)

 Algoritmen skal nå gjøres raskere ved hjelp av 2 små inngrep:

...


a)    

        Lag funksjonen isPrime(N) som tar inn et heltall, N,  som parameter og tester om det er et primtall ved hjelp av en for-løkke. Funksjonen skal returnere true hvis tallet er et primtall og false hvis det ikke er det.

        Et primtall er et tall som kun er delelig med seg selv og 1, og er større enn 1. Du kan ikke bruke Matlabs innebygde isprime()

b) 

        Lag en ny funksjon, getPrimeList(N), som returnerer en liste over de første primtallene.

        Hint: Kan vi bruke de primtallene vi allerede har funnet til å gjøre koden raskere?        

c)

        Ved å liste de første fem primtallene: 2, 3, 5, 7, 11, kan vi se at 11 er det femte primtallet.

Finn det 10001ste primtallet.

...

d)

Det skal lages en ny primtallsfunksjon. Funksjonen begynner med en listen [2].  Den skal deretter iterere seg over oddetall fra 3 til N. Dersom tallet ikke er delelig med noen av tallene i listen skal det legges til listen. 

e) 

Primtallene skal lagres til en fil og det skal være mulig å la den nye primtallsfunksjonen fortsette på listen uten å regne ut listen fra starten av. Det kan være lurt å lage tre nye funksjoner for dette: mainPrime, loadPrimes, savePrimes.
mainPrime regner ut feks 100 primtall som lagres og spør brukeren om ytterligere 100 primtall skal finnes.