ABIX_Edukacja

liczby_zaprzyjaznione

Mar 22nd, 2019
7,353
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.30 KB | None | 0 0
  1. '''
  2. Liczby zaprzyjaźnione to para różnych liczb całkowitych dodatnich takich, że suma
  3. dzielników właściwych każdej z tych liczb równa się drugiej liczbie. Pierwszą parę
  4. takich liczb podał Pitagoras – to 220 i 284.
  5. 220 = 1+2+4+71+142 (dzielniki 284)
  6. 284 = 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 (dzielniki 220)
  7. Zdefiniuj funkcję logiczną zaprzy(a, b) , która w wyniku wyświetli True , jeśli para
  8. liczb a i b podanych jako parametry będzie zaprzyjaźniona, lub False – jeśli nie będzie.
  9. '''
  10.  
  11. # poniżej funkcje pomocnicze
  12.  
  13. ###################
  14. def dzielniki(liczba):
  15.     '''
  16.    liczba = liczba całkowita > 0
  17.    zwraca listę liczbb, dzielników: [ 1,2,3,4,...]
  18.    '''
  19.     if liczba==0:
  20.         return None
  21.    
  22.     lista = []
  23.    
  24.     for i in range(1,liczba):
  25.         if liczba % i == 0:
  26.             lista.append(i)
  27.    
  28.     return lista
  29.  
  30. #######################
  31. def suma_dzielnikow(lista):
  32.     '''
  33.    lista = lista dzielników zwracana przez funkcję dzielniki()
  34.    zwraca sumę jako liczbe całkowitą
  35.    '''
  36.     suma = 0
  37.     for kazdy in lista:
  38.         suma += kazdy
  39.    
  40.     return suma
  41.  
  42. #################
  43. def zaprzy(a, b):
  44.     '''
  45.    a,b = liczby całkowite > 0
  46.    zwraca True jeśli zaprzyjaźnione, False jeśli nie
  47.    (wewnątrz wypisuje na ekran dodatkowe informacje)
  48.    '''
  49.     print('------------------------------------------------------------')
  50.     print('Sprawdzamy zaprzyjaźnione liczby: ' + str(a) + ' i ' + str(b))
  51.     lista_dzielnikow_a = dzielniki(a)
  52.     lista_dzielnikow_b = dzielniki(b)
  53.     suma_dzielnikow_a  = suma_dzielnikow(lista_dzielnikow_a)
  54.     suma_dzielnikow_b  = suma_dzielnikow(lista_dzielnikow_b)
  55.     print('Lista dzielników dla '+str(a) + ': ' + str(lista_dzielnikow_a) )
  56.     print('Lista dzielników dla '+str(b) + ': '+ str(lista_dzielnikow_b) )
  57.     print('Suma dzielników ' + str(a) + ': ' + str(suma_dzielnikow_a) )
  58.     print('Suma dzielników ' + str(b) + ': ' + str(suma_dzielnikow_b) )
  59.     if suma_dzielnikow_a == b and suma_dzielnikow_b == a:
  60.         print('OK - ' + str(a) + ' i ' +str(b) + ' to są liczby zaprzyjaźnione.')
  61.         return True
  62.     return False
  63.    
  64.    
  65. ####################################
  66. # tu własciwy skrypt
  67. wynik = zaprzy(220,284)
  68. print(str(wynik))
  69. print(str(zaprzy(210,23)))
Advertisement
Add Comment
Please, Sign In to add comment