Сделать на Python 1. Два натуральных числа называются «дружественными», если каждое из них равно сумме
всех делителей (кроме его самого) другого (например, числа 220 и 284). Найти все пары
«дружественных» чисел, которые не больше данного числа N.
2. Даны длины сторон треугольника a, b, c. Найти медианы треугольника, сторонами
которого являются медианы исходного треугольника. Для вычисления медианы
проведенной к стороне а, использовать формулу Вычисление медианы оформить в виде
процедуры.

trybak03 trybak03    3   14.05.2021 18:23    15

Ответы
arturdadayan arturdadayan  08.01.2024 21:06
Добрый день!

Конечно, я помогу с решением задачи. Для начала рассмотрим первую задачу:

1. Для нахождения пары "дружественных" чисел до числа N, нужно будет проверить каждое число на условие "дружественности". Создадим функцию "find_friend_numbers(N)", где N - заданное число.

2. Внутри функции создадим цикл, который будет перебирать все числа от 1 до N-1. Пусть переменная "i" будет перебирать значения от 1 до N-1.

3. Внутри цикла создадим переменные "sum1" и "sum2", которые будут хранить суммы делителей чисел.
- Для нахождения делителей числа, создадим цикл, который будет перебирать числа от 1 до половины числа (т.к. делителей больше половины числа быть не может). Пусть переменная "j" будет перебирать значения от 1 до числа-1.
- Если число i делится на j без остатка, значит j является делителем числа i. Тогда добавляем j к sum1.
- Делаем то же самое для числа j, суммируя делители и записывая их в sum2.
- Если sum1 равно i и sum2 равно j, значит числа i и j являются "дружественными". Выводим их на экран.

4. Таким образом, мы получим все пары "дружественных" чисел до числа N.

Теперь рассмотрим вторую задачу:

1. Для нахождения медиан треугольника, создадим функцию "find_triangle_medians(a, b, c)", где a, b, c - длины сторон исходного треугольника.

2. Для вычисления медианы, проведенной к стороне а, воспользуемся формулой: медиана_а = 0.5 * sqrt(2 * (b^2 + c^2) - a^2), где sqrt - квадратный корень.

3. Вычислим медианы к каждой стороне исходного треугольника, используя формулу из пункта 2.

4. Выведем найденные медианы на экран.

Теперь давайте соберем все вместе и предложим окончательное решение задачи:

```
import math

# Первая задача
def find_friend_numbers(N):
for i in range(1, N):
sum1 = 0
sum2 = 0
for j in range(1, i):
if i % j == 0:
sum1 += j
for j in range(1, sum1):
if sum1 % j == 0:
sum2 += j
if sum1 == i and sum2 == j:
print(i, sum1)

# Вторая задача
def find_triangle_medians(a, b, c):
median_a = 0.5 * math.sqrt(2 * (b**2 + c**2) - a**2)
median_b = 0.5 * math.sqrt(2 * (a**2 + c**2) - b**2)
median_c = 0.5 * math.sqrt(2 * (a**2 + b**2) - c**2)
print("Медианы треугольника:", median_a, median_b, median_c)

# Пример использования
find_friend_numbers(1000)
find_triangle_medians(3, 4, 5)
```

При вызове функции `find_friend_numbers(1000)` будут найдены и выведены все пары "дружественных" чисел, не большие чем 1000. Вторая функция `find_triangle_medians(3, 4, 5)` найдет медианы треугольника со сторонами 3, 4, и 5, и выведет их на экран.

Надеюсь, это понятное и подробное решение поможет вам с задачей. Если у вас остались какие-либо вопросы, я с радостью на них отвечу!
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика