fork download
  1. """
  2. Дружественные числа
  3. это два натуральных числа, таких,
  4. что сумма всех делителей одного числа (меньших самого этого числа)
  5. равна другому числу, и наоборот.
  6.  
  7. Используйте функцию, которая вычисляет сумму делителей числа
  8. Найдите все пары дружественных чисел, каждое из которых меньше 10000
  9.  
  10. Python 3.7
  11. """
  12. def sum_del(a):
  13. summ = 0
  14. for i in range(1, a//2+2):
  15. if a/i == a//i:
  16. summ += i
  17. return summ
  18.  
  19. n = 1
  20. m = 6000
  21. cnt = (m-n+1)//40
  22.  
  23. ind = []
  24. sd = []
  25. pairs = []
  26. for i in range(n,m+1):
  27. ind.append(i)
  28. sd.append(sum_del(i))
  29. if not i%cnt:
  30. print('.',end='')
  31.  
  32. print()
  33.  
  34. for i in range(m-n+1):
  35. for j in range(i, m-n+1):
  36. #if n+i == sd[j] and n+j == sd[i]:# так, если совершенные числа тоже учитывать
  37. if n+i == sd[j] and n+j == sd[i] and sd[j] != sd[i]:# так, если совершенные числа не учитывать
  38. pairs.append((n+i, sd[j]+j-i))
  39. if not i%cnt:
  40. print('-',end='')
  41.  
  42. print()
  43. for a in pairs:
  44. print(*a, sep=', ')
  45.  
  46.  
Success #stdin #stdout 3.86s 27720KB
stdin
Standard input is empty
stdout
........................................
----------------------------------------
220, 284
1184, 1210
2620, 2924
5020, 5564