Hannes algoritme for største kvadrater som dekker et rektangel
Lov på eksamen
- Kalkulator
- CAS
- Graftegner og regneark
- Lærebok, formelsamling og egne notater
Ikke åpent internett, kommunikasjon med andre eller kunstig intelligens.
Kan den løses uten PC?
1 av 2 deloppgaver kan løses uten PC.
Fra 2027 er det bare kalkulator og skriftlige hjelpemidler på del 2. Vurderingen er gjort med KI og kan inneholde feil.
Lest inn av KI og ikke kontrollert manuelt enda — kan inneholde feil.
Hanne er kunstner og arbeider med rektangler i ulike størrelser. Lengdene til sidene i rektanglene er hele tall.
Hun vil dekke et rektangel med små røde kvadrater. Kvadratene skal ligge tett inntil hverandre, og alle skal være like store. Hanne vil lage en algoritme som hun kan bruke for å finne ut hvor store kvadratene maksimalt kan være.
Hun har laget noen figurer som skal vise hvordan hun tenker.

Lag en algoritme som beskriver måten Hanne vil løse problemet på.
Bruk programmering til å lage et dataprogram med utgangspunkt i algoritmen. Når Hanne forteller programmet hvor lange sidene i rektangelet er, skal programmet bestemme hvor store sidekantene i kvadratene maksimalt kan være.
Fasit
Se algoritme i løsningsforslaget (Euklids algoritme).
LøsningsforslagKI-generert
Ser vi på figurene til Hanne, gjør hun det samme hver gang: hun legger et størst mulig kvadrat inntil rektangelet, og det som blir igjen er et nytt, mindre rektangel. Dette gjentas helt til det som er igjen selv er et kvadrat (helt dekket av like store kvadrater).
Dette er nøyaktig framgangsmåten i Euklids algoritme for å finne den største felles faktoren (gcd) til to hele tall — her sidelengdene og i rektangelet.
Algoritmen kan beskrives slik, i ord:
- La være den lengste siden og den korteste siden i rektangelet.
- Legg på et størst mulig kvadrat med sidekant inntil rektangelet.
- Det som er igjen av rektangelet, har sidene og , der er resten når deles på (altså ).
- Sett og , og gjenta fra steg 2.
- Når resten blir , er hele det opprinnelige rektangelet dekket av kvadrater med sidekant lik den siste verdien av . Dette er den maksimale sidekanten kvadratene kan ha.
Som pseudokode:
SETT a = lengste side
SETT b = korteste side
SÅ LENGE b ≠ 0
r = a MOD b
a = b
b = r
SLUTT SÅ LENGE
Sidekanten til de største kvadratene er a
Vi bruker samme algoritme til å skrive et program. Programmet spør etter sidene i rektangelet og regner ut den maksimale sidekanten med Euklids algoritme (modulo-operasjonen % i Python):
def storste_kvadrat(a, b):
while b != 0:
a, b = b, a % b
return a
lengde = 18
bredde = 8
sidekant = storste_kvadrat(lengde, bredde)
print(f"Kvadratene kan maksimalt ha sidekant {sidekant}.")
Kjøring av programmet med et rektangel på gir følgende utskrift:
Kvadratene kan maksimalt ha sidekant 2.
Det stemmer: og , så er den største felles faktoren til og , og dermed den maksimale sidekanten kvadratene kan ha for å dekke rektangelet helt.
Programmet gir altså sidekanten til de største kvadratene som kan dekke et rektangel, ved å bruke Euklids algoritme (gjentatt modulo-operasjon) helt til resten blir .