Podczas lekcji przedstawimy podstawowe zastosowanie funkcji w języku Python.
Funkcja τ - funkcja zwracająca liczbę dzielników danej liczby
Omówmy teraz zapisaną funkcję poniżej. Po pierwsze musimy zdefiniować funkcję i nadać jej nazwę, w naszym przypadku nazwaliśmy ją "tau". Następnie dodajemy do niej jeden argument – liczbę, której ilość dzielników zwrócimy. W naszym przypadku "x". Tworzymy zmienną “liczba_dzielników”, która będzie zliczać kolejne dzielniki liczby, dzięki czemu na końcu funkcji będziemy mogli zwrócić wynik. Przypisujemy jej wartość 0, jako że początkowo nie znamy żadnego dzielnika. Kolejnym krokiem będzie stworzenie pętli “for i in range”. Jako jej argumenty podajemy 1 i x+1, aby nasza funkcja sprawdzała podzielność zmiennej x przez wszystkie liczby od 1 do samego x. W pętli for zamieszczamy instrukcję warunkową, która sprawdza podzielność naszej liczby przez dzielnik. Jeżeli ten warunek jest spełniony, to zwiększamy wynik o 1. Na sam koniec funkcji zwracamy liczbę dzielników wprowadzonej do funkcji zmiennej.
def tau(x):
liczba_dzielnikow=0
for i in range(1, x+1):
if x%i==0:
liczba_dzielnikow+=1
return liczba_dzielnikow
n=int(input())
print(tau(n))
24
8
Funkcja sprawdzająca, czy dana liczba naturalna jest pierwsza
Dla przypomienia - liczba pierwsza to liczba, która ma dokładnie dwa dzielniki naturalne – 1 i samą siebie.
Zaczniemy od zdefiniowania funkcji i nadania jej argumentów: w tym przypadku jednego - liczby, którą sprawdzamy, czy jest pierwsza.
Warto zauważyć, że jeśli liczba n ma dzielnik d mniejszy od niej i różny od 1 to również n/d też jest dzielnikiem n. Oznacza to,
że wystarczy sprawdzać, czy istnieje dzielnik mniejszy lub równy pierwiastkowi z n. Jako że pierwiastek nie zawsze jest liczbą naturalną, to
musimy zaokrąglić go do liczby całkowitej, gdyż chcemy, aby był argumentem pętli for - posłuży nam do tego funkcja floor (podłoga), która zaokrągla
liczbę, do najbliższej liczby całkowitej. Musimy zaimportować również bibliotekę matematyczną, aby móc użyć funkcji floor i sqrt.
Jako że każda liczba podzielna jest przez 1, musimy zacząć pętle od liczby 2.
Kolejnym krokiem w budowie tej funkcji jest dołożenie instrukcji warunkowej.
Warunek, który sprawdza podzielność. Jeśli liczba jest podzielna przez “i” oznacza to, że nie jest pierwsza, zwracamy wtedy False.
Na sam koniec dodajemy komendę zwracania True, która wykona się, jeżeli, ani razu n nie będzie podzielne przez "i".
Będzie to oznaczać, że n jest liczbą pierwszą.
Warto zauważyć, że dla liczb 0 i 1, pętla nie zacznie działać, zatem funkcja zwróci wartość True.
Musimy zatem dopisać warunek sprawdzający, czy dana liczba do funkcji jest równa 0 lub 1.
from math import *
def czy_pierwsza(n):
if n==1 or n==0:
return False
for i in range(2, floor(sqrt(n))+1):
if(n%i==0):
return False
return True
n=int(input())
if(czy_pierwsza(n)):
print(n, "jest liczbą pierwszą.")
else:
print(n, "nie jest liczbą pierwszą.")
7
7 jest liczbą pierwszą.
8
8 nie jest liczbą pierwszą.
Funkcja σ - funkcja zwracająca sumę dzielników danej liczby
Musimy zdefiniować funkcję i nadać jej nazwę, w naszym przypadku nazwaliśmy ją "sigma". Następnie dodajemy do niej jeden argument – liczbę, której sumę dzielników zwrócimy. W naszym przypadku "x". Tworzymy zmienną “suma", która będzie zliczać sumę kolejnych dzielników liczby. Przypisujemy jej wartość 0, jako że początkowo nie znamy żadnego dzielnika. Kolejnym krokiem będzie stworzenie pętli “for i in range”. Jako jej argumenty podajemy 1 i x+1, aby nasza funkcja sprawdzała podzielność zmiennej x przez wszystkie liczby od 1 do samego x. W pętli for zamieszczamy instrukcję warunkową, która sprawdza podzielność naszej liczby przez dzielnik. Jeżeli ten warunek jest spełniony, to zwiększamy wynik o dzielnik. NA sam koniec funkcji zwracamy sumę dzielników wprowadzonej do funkcji zmiennej.
def sigma(x):
suma=0
for i in range(1, x+1):
if x%i==0:
suma+=i
return suma
n=int(input())
print(sigma(n))
6
12
Funkcja określająca czy liczba jest deficytowa, doskonała czy nadmiarowa.
Zdefiniujmy nazwy:
Liczba deficytowa - liczba, której suma dzielników liczby n jest mniejsza od 2n.
Liczba doskonała - liczba, której suma dzielników liczby n jest równa 2n.
Liczba nadmiarowa - liczba, której suma dzielników liczby n jest większa od 2n.
Możemy wykorzystać powyższą funkcję, która zwraca sumę dzielników liczby. Musimy dodać jedynie instrukcję warunkową,
która pozwoli nam stwierdzić, czy liczba jest deficytowa, doskonała czy nadmiarowa.
def sigma(x):
suma=0
for i in range(1, x+1):
if x%i==0:
suma+=i
return suma
n=int(input())
if sigma(n)<2*n:
print(n, "jest deficytowa.")
elif sigma(n)==2*n:
print(n, "jest doskonała.")
else:
print(n, "jest nadmiarowa.")
12
12 jest nadmiarowa.
6
6 jest doskonała.
4
4 jest deficytowa.