Delen in Python

Een deling in Python:

  • In de verzameling der reeële getallen in [1]
  • In de verzameling van de gehele getallen in [2], kan je quotiënt en rest bepalen bij deling van a door b
    Een mooie toepassing is van een reeks getallen nakijken of ze even zijn of niet. Even getallen geven rest 0 bij deling door 2:

 

 

 

Een opgave over absolute waarden

Schrijf een Python programma dat de absolute waarde van een getal uit een gegeven lijst afdrukt als het getal kleiner is dan -5 of groter dan 2. Zoniet wordt er gewoon afgedrukt dat het getal niet werd uitgevoerd.

Spoiler

 

 

  • We gaan met een for lus alle getallen uit de gegeven lijst controleren.
  • Als het voldoet aan de voorwaarde <-5 of >2 dab drukken we de absolute waarde af ( Abs(x)).
  • Zoniet geven we de andere boodschap.

 

merk op dat er 3 manieren gegeven zijn om tekst in te voegen. De eerste via een commentaar lijn ( #…). En dan 2 mogelijkheden met een print bevel.

 

Python probleem 3

Bepaal de grootste priemfactor van 600851475143.

Antwoord

 

 

  • We gaan een functie definiëren die de grootste priemfactor berekent van een willekeurig getal n. We importeren math om te werken met een vierkantswortel.
  • We gaan eerst kijken of n een macht van 2 is. We delen alle factoren 2 weg. Ofwel komen we 1 uit en dan is de hoogste priemfactor 2, ofwel komen we een getal uit groter dan 2. 
  • In de volgende lus herhalen we deze procedure voor alle getallen groter dan 3, met stapjes van 2 ( want de factoren 2 zijn al weg), tot aan wortel(n).
  • Nu is het enkel nog kwestie van afdrukken.

 

Stelling van Zeckendorf

De stelling van Zeckendorf  is vernoemd naar de Belgische dokter, legerofficier en wiskundige Edouard Zeckendorf.

De stelling zegt dat elk positief geheel getal op een unieke manier kan geschreven worden als de som van één of meer verschillende  getallen uit de rij van Fibonacci die elkaar niet opvolgen. Een dergelijke som wordt de Zeckendorfrepresentatie van een getal genoemd. De Zeckendorfrepresentatie van het getal 100 is 89+8+3.

Start met het grootste getal a_1 uit de rij van Fibonacci dat kleiner is of gelijk aan het getal n. Zoek daarna het grootste getal a_2 uit de rij van Fibonacci dat kleiner is of gelijk aan het verschil  n-a_1. Blijf dit proces herhalen totdat het verschil uiteindelijk zelf een getal is uit de rij van Fibonacci. Nu zijn a_1 en a_2 geen opeenvolgende termen van de rij van Fibonacci, want waren ze dat wel dan zou a_1+a_2 een term van de rij van Fibonacci zijn en groter zijn dan n. Dit is onmogelijk want a_1+a_2<n.

We geven ook een Python programma mee om de Zeckendorf representatie te berekenen. In het voorbeeld berekenen we deze van 2021:

Python probleem 2

Bereken de som van alle oneven Fibonacci getallen kleiner dan 4 miljoen.

Antwoord

  • De rij van Fibonacci : 1,1,2,3,5,8,13,21,.. De rij begint met twee enen en daarna is elke term gelijk aan de som van de vorige twee termen.
  • Een eerste idee: bereken elke term , controleer of het even is en tel op bij een gegeven teller. 
  • Omdat de rij gegeven wordt door een recursief voorschrift, is het gebruik van een functie Fibonacci(n) niet zo interessant . Immers worden telkens alle vorige termen opnieuw uitgerekend.
  • We kunnen beter werken met 3 termen van de rij en dan doorschuiven:a=1;b=1en c=a+b.Daarna geven we de waarde van b aan a en de waarde van c aan b en berkenen opnieuw a+b