You are on page 1of 4
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 CamScanner Jao 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 CamScanner it 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 CamScanner ae 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

You might also like