PROG0221 - V-perfect numbers

no tags 

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