PROG0221 - V-perfect numbers
Charles is always very careful: whenever he has to choose a number that can have an impact on his life, he doesn't just do it. Charles always chooses the so-called $v$-perfect number, because he believes that this is a lucky number.
$v$-perfect numbers are strictly positive whole numbers of which the sum of their positive divisors equals a multiple of $v$ of the number itself. An example of a 3-perfect number is 120. The sum of all divisors of 120, namely $$1+2+3+4+5+6+8+10+12+15+20+24+30+40+60+120 = 360$$ equals three times 120.
Assignment
- Write a function sumdivisors that prints the sum of the divisors of a given number $n$ (with $n \in \mathbb{N}$ and $n > 0$), that is given to the function as an argument.
- Use the function sumdivisors to write a function vperfect, to which a number $n$ (with $n \in \mathbb{N}$ and $n > 0$) should be given as an argument. If the number $n$ is a $v$-perfect number, the function should print the value $v \in \mathbb{N}$ as a result. Otherwise, the function should print the value None.
- Use the function vperfect to write a function search that searches the smallest $v$-perfect number in the interval $[x, y]$. The integers $x$ and $y$ must be given as arguments to the function. If the smallest $v$-perfect number $n$ can be found in the interval given, the function should print the tuple $n, v$ as a result. The function should print the value None if the interval doesn't contain any $v$-perfect numbers.
Example
>>> print(sumdivisors(120)) 360 >>> print(sumdivisors(121)) 133 >>> print(vperfect(120)) 3 >>> print(vperfect(121)) None >>> print(search(5, 10)) (6, 2) >>> print(search(50, 100)) None >>> print(search(100, 150)) (120, 3) >>> print(search(400, 500)) (496, 2)
Floris is altijd zeer voorzichtig: telkens als hij een getal moet kiezen dat zijn leven kan beïnvloeden, doet hij dat niet zomaar. Floris kiest telkens een zogenaamd $v$-perfect getal, omdat hij gelooft dat dit geluk brengt.
$v$-perfecte getallen zijn strikt positieve gehele getallen waarvan de som van de positieve delers gelijk is aan een veelvoud $v$ van het getal zelf. Een voorbeeld van een 3-perfect getal is 120. De som van alle delers van 120, namelijk $$1+2+3+4+5+6+8+10+12+15+20+24+30+40+60+120 = 360$$ is immers gelijk aan 3 maal 120.
Opgave
- Schrijf een functie somdelers die voor een gegeven getal $n$ (met $n \in \mathbb{N}$ en $n > 0$), dat als argument aan de functie moet doorgegeven worden, de som van de delers van dat getal als resultaat teruggeeft.
- Gebruik de functie somdelers om een functie vperfect te schrijven, waaraan een getal $n$ (met $n \in \mathbb{N}$ en $n > 0$) als argument moet doorgegeven worden. Indien het getal $n$ een $v$-perfect getal is, moet de functie de waarde $v \in \mathbb{N}$ als resultaat teruggeven. Anders moet de functie de waarde None als resultaat teruggeven.
- Gebruik de functie vperfect om een functie zoek te schrijven die het kleinste $v$-perfecte getal opzoekt dat gelegen is in het interval $[x, y]$. De natuurlijke getallen $x$ en $y$ moeten als argumenten aan de functie doorgegeven worden. Indien een kleinste $v$-perfect getal $n$ kan gevonden worden in het opgegeven interval, dan moet de functie het tuple $n, v$ als resultaat teruggeven. De functie moet de waarde None teruggeven als het opgegeven interval geen $v$-perfecte getallen bevat.
Voorbeeld
>>> print(somdelers(120)) 360 >>> print(somdelers(121)) 133 >>> print(vperfect(120)) 3 >>> print(vperfect(121)) None >>> print(zoek(5, 10)) (6, 2) >>> print(zoek(50, 100)) None >>> print(zoek(100, 150)) (120, 3) >>> print(zoek(400, 500)) (496, 2)
Added by: | Peter Dawyndt |
Date: | 2012-02-11 |
Time limit: | 5s-30s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | PY_NBC |
Resource: | None |