iczb
2. Le ayiko doskonate
DOWIESZ SIE, JAK oe ;
a wykorzystywac \asne funkcje do obliczen w Pythonie,
g obliczaé sume dzielnikow whasciwych liezby.
LICZBY DOSKONALE
Liczby doskonale pamigtasz 2 Lekcji programowania w Klasie 7 - to takie licaby natu-
ralne, ktére sq suma wszystkich swoich dzielnikow whasciwych (tj. liczb mniejszych
od dzielnej). Liczby doskonale studiowali m.in. Pitagoras (VI-V w. p.n.e.) i Euklides
(IV w. pn.e.). $4 nimi np. liczba 6, bo jej dzielniki wlagciwe 1, 21 3 w sumie daja 6,
oraz liczba 28, ktérej dzielniki wlasciwe to 1, 2, 4, 7114. Nie wiadomo, c2y istnicje
nieskoriczenie wiele liczb doskonalych. Nie wiadomo réwniez, czy istnieje cho¢ jedna
liczba doskonala nieparzysta.
> Zdefiniuj jednoparametrowa funkcjg suma_dzielnikow (Liczba), kt6re) wynikiem
bedzie suma dzielnikéw wiasciwych liczby podane| jako parametr Przyjmij zaloze-
nie, ze jest to liczba calkowita dodatnia.
« Tak jak w funkeji suma_cyfr zdefiniuj zmienna, w ktorej bedziesz 74
sume znalezionych dzielnikow whasciwych. Nazwij ja pom.
«+ Poniewae 1 jest dzielnikiem wlasciwym kazdej liceby r6anej od 1, nadaj
pom wartosé poczatkowa rowna 1.
« Sprawdzanie podzielnosci liczby b przez liczbe a polega m
7 dzielenia liczby b przez a. Jesli reszta jest r6wna 0, to dzieln
i trzeba dodaé go do sumy.
« Zauwat, 2e jezeli liczba a r6zna od 1 jest dzielnikiem whasciwy> liczby »°
b/a tez jest dzielnikiem wkaéciwym liczby b. Jednoczesnie pamigtaj, 2¢ je’
a jest pierwiastkiem z licaby b, to b/a jest réwne a, a wige nie jest to nowy diel
whaéciwy.
pisywat
zmienne|
a obliczaniu reszly
ik zostat znaleziony
Zeskanowane w CamScannerJao se TTERO DOSKONALE =—03,
Rys. 1. Badanie podzielnosci iczby 100
~ Suma dzielnikow wtasciwych wynosi 117
* Wykorzystaj petle £or. Zacznij sprawdzanie podzielnoéci od liczby 2.
+ Sprawdg, jakie wartosci generuje funkcja range (2, 7).
for i in range(2, 7):
print (i)
Aby obliczy¢ pierwiastek kwadratowy z liczby, skorzystaj z biblioteki math. Mozesz
zaimportowa¢ pojedynczq funkcj¢ (from math import sqrt) lub caly modut
{from math import *).
Edit Format Run 0}
# import funkeji sqrt z moduiu math
from math import sqrt
Help
[B Python 3.6.4 Shell
File Edit Shell Debug Opti
3.0
# pierwiastek kwadratowy 2 9 1.7320508075688772
print (sqrt (9)) eam
# pierwiastek kwadratowy 2 3
print (sqrt (3))
[File Edit Format Run Optio. jon Hell [python 364 Shell
f import modutu math File Edit’ Shell Debug Optio
from math import * no ne
# pierwiastek kwadratowy 2 4 eee
print (sqrt (4)) 2
# pierwiastek kwadratowy 2
print (sqrt (2))
ych funkcjg sqrt ()
Rys. 2. Kody programéw wykorzystujac)
Zeskanowane w CamScannerit
wie andardowe} Pythona, ktéry zawier,
do wykoraystania winnych program,
dokumentac}! inate (tps os. pxthon arg,
vee tkich standardowych modulow ~ Globa
* eiesz alfabetyczny SPIS wszystkie! bare
Bi des ona glotbal modjul indeks), np. graficzny modut turtle (czyta he
2dhw), ktéry bedzie ci potrzebny podczas lekeji 4.2.
Co to jes!
Modut to plik beda
zestawienie pewnye i
wjezyku python. Na stronie:
cy czgscia piblioteki st
F definicjiiinstruke}t
jak dziata funkcja int ().
> A teraz spraw
Run Options |
| fle felt _Farmat_
print (int (3))
print (int (3.14))
print (int (3.94))
Rys. 3. Kod programu wykorzystujacego funkcjg int ()
> Preeanalizuj ponizsza funke}
eee ceed a nastepnie przetestuj jg dla réznych war’
2 m licz 1496. Warto tez uruchomi je dla dy
i 284, Czy zauwazasz cos ciekawego? mic fankle dewey
# import funkcji
ji sqrt zm
from math import sqrt oduzu math
def suma_dzielni
Lt Lk: i :
Se ‘ow (Liczba) :
for a 3 i
i _in range (2, int (sqrt (Liczba)) +1)?
ererazany podzielnosé przez kolejn?
fliceby od 2° do piervi icebY
if liczba & i oe a
pom #= i .
fsprawdzamy, czy dzielnik nie jer
fbterwiastkiem z liczby
i liczba // i:
retarn pom Pot Tiezee Hes.
Rys. 4. Kod .
Progra i
'Bramu wykorzystujacego funkcje sqrt () oraz int
EO
Zeskanowane w CamScannerae LICZBY NIE TYLKO DOSKONALE
> Zdefiniuj jednoparametrowa funkcjg wypisz_doskonale (n), gdzic n ozna
aes, w ktorym bedq wypisywane liczby doskonale. Skorzystaj z-zapisane| weze
funkcji suma_dzielnikow(liczba).
a
ef wypisz_doskonale(n):
| for iin range(2, n#1):
| if i == suma_dzielnixow(i): | rie cat Options Window
print (i) >>> wypi cate Tit
>>> wypisz_doskonale (10000)
6
28
496
6128
| >>>
LB Python 3.64 Shel
Rys. 5. Fragment kodu wykorzystujacego funkcj¢ suma_dzielnikow (liczba)
W zastosowanej w programie petli for nastepuje sprawdzanie, czy kolejne liczby
od 2 do n sq réwne sumie swoich dzielnikow whasciwych. Gdy taka liczba zostanie
maleziona, wowczas jest ona wySwietlana. Na lekcji mozliwe jest wypisanie tylko
czterech liczb doskonalych. Oczekiwanie na znalezienie piatej (33 550 336) trwa
bardzo dlugo.
a
n
1. Licaby zaprzyjaznione to para réznych liczb catkowitych dodatnich takich, ze suma
dzielnikéw wtasciwych kazdej z tych liczb réwna sig drugiej liczbie. Pierwsza pare
takich liczb podat Pitagoras — to 220 i 284.
200 = 14244471 + 142 (dzielniki 284)
284 = 1424445410411 + 204 224 44+ 55+ 110 (dzielniki 220)
Zdefiniuj funkcj¢ logiczna zaprzy(a, b), ktéra w wyniku wyswietli True, jesli para
liczb ab podanych jako parametry bedzie zaprzyjazniona, lub False — jesli nie
bedzie.
N
. Zdefiniuj jednoparametrowa funkcje wypisz_zaprzy (n), gdzie n oznacza zakres,
6 i i Dian = 10000 istnieje pieé par
w ktérym beda wypisywane liczby zaprzyjaénione. DIe 0
liczb vaprayjednionych: 220 i 284, 1184 i 1210, 2620 i 2924, 5020 i 5564 oraz 6232
i 6368.
Zeskanowane w CamScanner
65