Oppgaver: Programmering av tallfølger

Oppgaver: Programmering av tallfølger#

Oppgave 1

Ta quizen!


Oppgave 2

Nedenfor vises noen programkoder som skriver ut noen tall. Les programmene og prøv å forutsi hvilke tall de skriver ut.

Skriv inn gjetningen din og sjekk svaret ditt for hvert av programmene.


Oppgave 3

Fyll ut programmet nedenfor slik at det skriver ut alle tallfølgen

\[ 1, 2, 3, 4, 5, 6, 7, 8. \]

Fyll ut programmet nedenfor slik at det skriver ut tallfølgen

\[ 2, 4, 6, 8. \]

Fyll ut programmet nedenfor slik at det skriver ut tallfølgen

\[ 1, 5, 9, 13. \]

Fyll ut programmet nedenfor slik at det skriver ut tallfølgen

\[ -5, -3, -1, 1, 3, 5. \]

Oppgave 4

Fyll ut programmet nedenfor slik at det skriver ut tallfølgen

\[ 10, 6, 2 \]

Fyll ut programmet nedenfor slik at det skriver ut tallfølgen

\[ 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 0 \]

Fyll ut programmet nedenfor slik at det skriver ut tallfølgen

\[ 5, 3, 1, -1, -3, -5 \]

Fyll ut programmet nedenfor slik at det skriver ut tallfølgen

\[ -2, -5, -8, -11, -14 \]

Oppgave 5

Fyll ut programmet nedenfor slik at det skriver ut alle partallene til og med \(20\).

Fyll ut programmet nedenfor slik at det skriver ut alle oddetallene til og med \(21\).

Lag et program som skriver ut de \(20\) første partallene.

Lag et program som skriver ut de \(20\) første oddetallene.


Oppgave 6

Alma og Synne snakker om en annen strategi for å skrive ut partall og oddetall.

Alma

Jeg har en annen idé for å skrive ut partallene på. Vi kan lage en løkke som går gjennom alle naturlige tall og sjekker om det er et partall.

Synne

Det er en god idé! Da kan vi bruke en if-setning for å sjekke om tallet er partall.

Alma

Men hvordan sjekker vi at et tall er et partall igjen?

Synne

Det er vel bare å sjekke om det er delelig med \(2\)? Jeg har lest at det kan man gjøre ved å skrive
if n % 2 == 0:

Fyll ut programmet nedenfor slik at det skriver ut alle partallene til og med \(20\) ved hjelp av en if-setning.

Alma og Synne fortsetter samtalen.

Alma

Ok, så nå klarer vi å skrive ut partall ved å sjekke om et tall er delelig med \(2\). Men hva med oddetallene?

Synne

Da har jeg lest at vi kan bruke en if-else-setning. Hvis tallet er delelig med \(2\), så gjør vi ingenting. Da kan vi bruke pass. Og så skriver vi ut tallet hvis det ikke er delelig med \(2\).


Bruk strategien til Alma og Synne i programmet nedenfor.


Oppgave 7

Alma og Synne snakker om hvordan man kan avgjøre om et tall \(p \in \mathbb{N}\) er et primtall med et program.

Alma

Jeg har lest at et primtall er et tall som bare er delelig med \(1\) og seg selv.

Synne

Ja, det stemmer! Så hvis vi skal sjekke om et tall \(n\) er et primtall, så må vi sjekke om det er delelig med alle tallene fra \(2\) til \(p - 1\).

Alma

Ja, men hvordan gjør vi det i et program?

Synne

Vi kan bruke en løkke som går gjennom alle tallene \(n \in \{2, 3, \ldots, p - 1\}\) og sjekker om \(p\) er delelig med hvert av dem. Da kan vi vel bruke en if-setning litt som når vi sjekket om et tall var delelig med \(2\)?

Bruk strategien til Alma og Synne i programmet nedenfor. Sjekk at tallene \(11\), \(51\) og \(729\) er primtall.

Alma og Synne er ikke helt fornøyde.

Alma

Men nå sjekker vi jo fryktelig mange tall. Trenger vi å sjekke alle tallene fra \(2\) til \(p - 1\)?

Synne

Nei! Vi trenger bare å sjekke tallene opp til \(\sqrt{p}\). Hvis \(p\) er delelig med et tall større enn \(\sqrt{p}\), så må det også være delelig med et tall mindre enn \(\sqrt{p}\).

Alma

Hvorfor er det slik?

Synne

Det er jeg ikke sikker på. Var bare noe jeg så på Insta. Men hvordan regner vi ut \(\sqrt{p}\) i et program?

Alma

Det er enkelt! Vi kan bruke int(n ** 0.5)


Endre på programmet ditt og prøv ut strategien de snakker om.

Argumenter for at det største tallet man trenger å sjekke for å avgjøre om et tall \(p\) er et primtall, er \(\sqrt{p}\).


Oppgave 8

I denne oppgaven skal du lære hvordan man summerer tall med et program.

I programmet nedenfor summeres noen tall med en variabel s i en løkke. Linja s = s + n legger til verdien av n til summen s.

Les programmet og forutsi hvilken verdi som skrives ut av programmet.

Endre på programmet slik at det regner ut summen

\[ S = 1 + 2 + 3 + \ldots + 99 + 100 \]

Endre på programmet slik at det regner ut summen

\[ S = 1 + 3 + 5 + \ldots + 97 + 99 \]

Endre på programmet slik at det regner ut summen

\[ S = 2 + 4 + 6 + \ldots + 98 + 100 \]

Oppgave 9

En sum er gitt ved

\[ S = 1 + \dfrac{1}{2} + \dfrac{1}{4} + \dfrac{1}{8} + \dfrac{1}{16} + \ldots \]

Lag et program som skriver ut de første 5 leddene i summen.

Lag et program som regner ut summen av de 5 første leddene i summen

Bruk programmet ditt til å bestemme hvilken verdi summen nærmer seg når vi bruker veldig mange ledd.


Oppgave 10

Alma og Synne jobber med summen

\[ S = 1 - \dfrac{1}{2} + \dfrac{1}{4} - \dfrac{1}{8} + \dfrac{1}{16} - \ldots \]
Alma

Jeg vet hvordan vi kan regne ut summen når alle leddene er positive, men nå er jo leddene positive og negative annen hver gang.

Synne

Kan vi ikke bare bruke en if-else-setning sånn at programmet bytter på fortegnet annen hver gang da?

Alma

Jo! Er ikke det litt som å bare sjekke om et tall er delelig med \(2\) da?

Synne

Det tror jeg vil funke!

Ta utgangspunkt i ideen til Alma og Synne, og lag et program som skriver ut de 5 første leddene i summen.

Lag et program som regner ut summen av de 5 første leddene.

Bruk programmet ditt til å bestemme hvilken verdi programmet nærmer seg når vi bruker veldig mange ledd.


Oppgave 11

Nedenfor ser du tre figurer. Figurene er satt sammen av små kvadrater.

Tenk deg at du skal fortsette å lage figurer etter samme mønster. Vi lar \(K_n\) være antall små kvadrater i figur \(n\).

../../../_images/figur136.svg

Bestem en formel for \(K_n\).

Lag et program som regner ut og skriver ut hvor mange små kvadrater det er i hver av de \(10\) første figurene.

Du starter med å lage figur \(1\), så figur \(2\), deretter figur \(3\), og så videre.

Lag et program som finner ut hvor mange kvadrater du må bruke for å lage de 10 000 første figurene.


Oppgave 12

Nedenfor ser du tre figurer. Figurene er satt sammen av små kvadrater.

Tenk deg at du skal fortsette å lage figurer etter samme mønster. Vi lar \(K_n\) være antall små kvadrater i figur \(n\).

../../../_images/figur137.svg

Bestem en formel for \(K_n\).

Lag et program som beregner og skriver ut hvor mange små kvadrater det er i hver av de \(20\) første figurene.

Tenk deg at du har 1 000 000 små kvadrater. Du starter med å lage figur \(1\), så figur \(2\), deretter figur \(3\), og så videre.

Lag et program som finner ut

  1. Hvor mange figurer du kan lage

  2. Hvor mange små kvadrater du har igjen


Oppgave 13

I denne oppgaven skal du jobbe med summer av oddetall og partall.

Vi lar \(S_n\) være summen av de \(n\) første oddetallene slik at

\[\begin{align*} S_1 &= 1 \\ S_2 &= 1 + 3 \\ S_3 &= 1 + 3 + 5 \\ S_4 &= 1 + 3 + 5 + 7 \\ S_5 &= 1 + 3 + 5 + 7 + 9 \\ S_6 &= 1 + 3 + 5 + 7 + 9 + 11 \\ \vdots & \quad \quad \quad \vdots \quad \quad \quad \vdots \quad \quad \quad \vdots \\ \end{align*}\]

Lag et program som skriver ut de \(20\) første oddetallene. Bruk formelen for oddetallene gitt ved

\[ O_n = 2n - 1 \qder n \in \mathbb{N} \]

Lag et program som skriver ut \(S_1, S_2, S_3, \ldots, S_{20}\).

La \(P_n\) være summen av de \(n\) første partallene.

Lag et program som skriver ut \(P_1, P_2, P_3, \ldots, P_{20}\).


Oppgave 14

Anna og Nicolai jobber med å lage et program som regner ut \(n\)-fakultet definert med formelen:

\[ n! = 1 \cdot 2 \cdot 3 \cdot \ldots \cdot (n - 1) \cdot n \]

For eksempel er

\[ 5! = 1 \cdot 2 \cdot 3 \cdot 4 \cdot 5 = 120 \]
Anna

Når vi regner ut summer, så setter vi en variabel s = 0 på starten av programmet, og så legger vi til leddene ved å skrive s = s + ledd.

Nicolai

Ja, kanskje vi bare kan bytte ut plusstegnet med et gangetegn da?

Anna

Men hvis s er 0 i starten, så blir jo svaret alltid 0?

Nicolai

Ja, men vi startet med 0 fordi å plusse på 0 endrer ikke summen. Hvilket tall er det som ikke endrer verdien til et produkt?

Ta utgangspunkt i dialogen mellom Anna og Nicolai og lag et program som regner ut \(5!\).

Antall måter å stokke en kortstokk på er \(52!\)

Bruk programmet ditt til å regne ut \(52!\).

Kan du forklare hvorfor det sannsynligvis stemmer at når man stokker en kortstokk, så er det nesten umulig å få samme rekkefølge som en annen gang?


Oppgave 15

Nedenfor vises et kvadrat med sidelengder \(3\).

Kvadratet er fylt med mindre fargelagte kvadrater som blir mindre og mindre.

../../../_images/figur138.svg

Lag et program som skriver ut arealet til de \(10\) største fargelagte kvadratene i figuren.

Lag et program som skriver regner ut summen av arealene til de \(100\) største fargelagte kvadratene i figuren.


Oppgave 16

Nedenfor vises en figur som er satt sammen av uendelige mange linjestykker.

Lengden til et linjestykke er alltid \(90 \%\) av lengden til det forrige linjestykket. Det første linjestykket er \(100\) cm langt.

../../../_images/figur139.svg

Lag et program som skriver ut lengden til de \(10\) første linjestykkene i figuren.

Lag et program som regner ut summen av lengdene til de \(100\) første linjestykkene i figuren.

Lag et program som finner hvor mange linjestykker du må sette sammen for at figuren skal være minst \(9\) meter.


Oppgave 17

Nedenfor vises tre figurer som følger et bestemt mønster.

La \(K_n\) være antall små kvadrater i figur \(n\).

../../../_images/figur140.svg

Bestem en formel for \(K_n\).

Lag et program som skriver ut \(K_1\), \(K_2\), \(K_3\), \(\ldots\), \(K_{20}\).

Lag et program som regner ut hvor mange små kvadrater du må bruke for å lage de 20 første figurene.


Oppgave 18

Å regne ut \(\pi\) med så mange desimaler som mulig har vært et mål for matematikere i over tusen år. En måte å komme fram til verdien til \(\pi\) på er med summen

\[ \pi = \dfrac{4}{1} - \dfrac{4}{3} + \dfrac{4}{5} - \dfrac{4}{7} + \dfrac{4}{9} - \ldots \]

Jo flere ledd man bruker, jo nærmere kommer man verdien til \(\pi\).

Lag et program som skriver ut de \(5\) første leddene i summen.

Du bør få disse verdiene i utskriften:

4.0
-1.3333333333333333
0.8
-0.5714285714285714
0.4444444444444444

Lag et program som summerer de \(5\) første leddene i tallfølgen.

Bestem en god tilnærming til \(\pi\) med programmet ditt fra b.

Hvor mange ledd trenger du for å få \(\pi\) med \(5\) riktige desimaler?


Oppgave 19

Summen av en annen tallfølge nærmer seg også \(\pi\), men mye raskere enn den forrige. Summen er

\[ \pi = 3 + \dfrac{4}{2 \cdot 3 \cdot 4} - \dfrac{4}{4 \cdot 5 \cdot 6} + \dfrac{4}{6 \cdot 7 \cdot 8} - \dfrac{4}{8 \cdot 9 \cdot 10} + \ldots \]

Lag et program som skriver ut de \(5\) første leddene i summen.

Du bør få utskriften:

3
0.16666666666666666
-0.03333333333333333
0.011904761904761904
-0.005555555555555556

Lag et program som regner ut en tilnærming til \(\pi\) ved å bruke de 10 000 først leddene i summen.


Oppgave 20

En rask måte å komme fram til sifrene til \(\pi\) er ved ta utgangspunkt i kjedebrøken nedenfor:

\[ \pi = \dfrac{4}{1 + \dfrac{1^2}{3 + \dfrac{2^2}{5 + \dfrac{3^2}{7 + \dfrac{4^2}{9 + \ddots}}}}} \]

Regn ut en tilnærming til \(\pi\) ved å bruke \(3\) ledd i kjedebrøken:

\[ \pi \approx \dfrac{4}{1 + \dfrac{1^2}{3 + \dfrac{2^2}{5}}} \]

Lag en algoritme du kan bruke til å skrive et program som regner ut verdien til \(\pi\) ved å bruke \(n\) ledd i kjedebrøken.

Lag et program med utgangspunkt i algoritmen din fra b og regn ut en tilnærming til \(\pi\).