Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Læringsmål:

  • Betingelser
  • For-løkker
  • While-løkker
  • Filbehandling (star)(star)Filbehandling   

Pensum:

  • 3.7 User-Defined Functions That Return a Single Value
  • 4.1 The if statement
  • 4.2 The if-else statement
  • 4.3 Nested if-else statements
  • 5.1 The for loop
  • 5.2 Nested for loops
  • 5.3 While loops
  • 5.4 Loops With Vectors and Matrices: Vectorizing
  • 9.1 Lower Level File I/O Functions (star)(star)Kap 7


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()

 

Code Block
languagehtml/xml
titleEksempel på kjøring:
>> isPrime(2003)
ans =
     1
>> isPrime(2001)
ans =
     0
>> isPrime(2)
ans =
     1



b) 

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

        Hint: Kan vi For å skape en effektiv kode, kan du bruke de primtallene vi du allerede har funnet til å gjøre koden raskere?        sjekke om et tall er et primtall. Den innebygde kommandoen break kan brukes til å hoppe ut av en enkelt for-løkke.  

Code Block
languagehtml/xml
titleEksempel på kjøring:
>> getPrimeList(8)
ans =
     2     3     5     7    11    13    17    19
>> getPrimeList(15)
ans =
     2     3     5     7    11    13    17    19    23    29    31    37    41    43    47

   

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.

Lag en funksjon, primeNumN(N), som tar inn antallet primtall N og bruker getPrimeList(N) til å returnere det siste av de N
        primtallene.

Code Block
languagehtml/xml
titleEksempel på kjøring:
>> primeNumN(10001)
ans =
      104743

 

d)     (Frivillig) (star)(star) (Denne oppgaven har fått to stjerner da den inneholder filbehandling som egentlig ikke er pensum før øving 9)

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 100 primtall som lagres og spør brukeren om ytterligere 100 primtall skal finnes. Når brukeren avslutter, skal alle primtallene som har blitt funnet, lagres og returneres.