(100pkt dam naj) Python
2/105 napisz program sprawdzający podzielność jednej liczby przez inną bez konieczności obliczania reszty z dzielenia. Zapisz program w pliku pod nazwą Podzielność_inaczej



Odpowiedź :

Odpowiedź:

a = float(input("Podaj dzielną "))

b = float(input("Podaj dzielnik "))

c = a//b

d = c*b

if(d == a):

   print("Liczba ",a," jest podzielna przez liczbę ",b)

else:

   print("Liczba ",a," nie jest podzielna przez liczbę ",b)

Wyjaśnienie:

Polecono napisać program sprawdzający podzielność jednej liczby przez inną. Z definicji "Liczba a jest podzielna przez liczbę b, jeżeli dzieląc liczbę a przez liczbę b otrzymamy wynik całkowity (bez reszty)."

Język Python posiada wbudowany operator modulo (a%b) - której zwracana wartość to właśnie reszta z dzielenia.

Ten operator umożliwia dosyć proste zrealizowanie celu zadania, ale w treści podkreślono, że program musi ominąć konieczność obliczania reszty z dzielenia.

To jest przykład złego założenia programu, który nie spełnia warunku nieobliczania reszty z dzielenia:

Gdyby tak nie było program mógłby ograniczyć się do:

a = float(input("Podaj dzielną "))

b = float(input("Podaj dzielnik "))

if(a%b==0): #w instrukcji sterującej obliczno resztę z dzielenia. źle

   print("Liczba ",a," jest podzielna przez liczbę ",b)

else:

   print("Liczba ",a," nie jest podzielna przez liczbę ",b)

Warto zauważyć, że treść polecenia wyklucza wyłącznie obliczanie reszty z dzielenia. Autor zadania nie zabrania nam żadnych innych zabiegów, aby osiągnąć wyznaczony cel: sprawdzić podzielność jednej liczby bez inną.

W pierwszej kolejności prosimy o wprowadzenie zmiennych i poddajemy je konwersji z typu string na float:

a = float(input("Podaj dzielną "))

b = float(input("Podaj dzielnik "))

Kolejnym krokiem jest przechowywanie zaokrąglonego wyniku dzielenia. Umożliwia nam to operator "floor division":

c = a//b

Następnie przeprowadzamy próbę pomnożenia wyniku zaokrąglonego z dzielnikiem (nadal nie mamy pojęcia jaka jest reszta z dzielenia).

d = c*b

Pozostaje nam sprawdzić, czy dana liczba (a) zgadza się z uzyskaną przez szereg modyfikacją liczbą (d). Robimy to w instrukcji sterującej i jednocześnie wysyłamy komunikat do użytkownika:

if(d == a):

   print("Liczba ",a," jest podzielna przez liczbę ",b)

else:

   print("Liczba ",a," nie jest podzielna przez liczbę ",b)

Efekt działania: Sprawdziliśmy podzielność jednej liczby przez drugą zgodnie z warunkami w zadaniu.

Dodatkowo program spełnia regułę KISS.

Odpowiedź

Program wraz z przykładowym uruchomieniem dałam w załączniku.

Wyjaśnienie

Program sprawdza podzielność, a więc nie wykonuje dzielenia...

Zobacz obrazek 0AB