Python

Помогите решить задания на python

Первое задание:
 def getndivs(n):
factors = {1}
maxp = int(n ** 0.5)
p,inc = 2,1
while p 1:
factors.update([f * n for f in factors])
return len(factors)

M, N = map(int, input().split())
maxd, maxc = 0, 0
for n in range(M, N + 1):
d = getndivs(n)
if (maxd < d): maxd, maxc = d, 1
elif (maxd == d): maxc += 1
print(maxc)
Сложность алгоритма O(N log N)
Попробуйте скормить диапазон от 1 до миллиона этой программе и быдлокоду от нейросети, приведённому ботом по имени "Алёна", и почувствуйте разницу.

Второе задание:
 from math import sqrt

def sqr(x): return x * x
def distsqr(p1, p2): return sqr(p1[0] - p2[0]) + sqr(p1[1] - p2[1])

print("Введите 4 точки, каждую пару координат на отдельной строке:")
pts = [tuple(map(int, input().split()[:2])) for _ in range(4)]
ds = [distsqr(p1, p2) for p1 in pts for p2 in pts if p2 != p1]
print(sqrt(max(ds)))
Юрий Сухов
Юрий Сухов
87 571
Лучший ответ
Обойдемся без нейросетей, потому что в ответе выше наглядный пример того что они генерируют лютую дичь
 def f(x): 
return [x / i for i in range(1, x - 1) if x / i == int(x / i)]

n = int(input('n'))
m = [f(i) for i in range(1, n + 1)]
mm = list(map(len,m))
print(*[i + 1 for i in range(len(m)) if len(m[i]) == max(mm)])
Первая задача:

M = int(input("Введите начало интервала: "))
N = int(input("Введите конец интервала: "))

max_divisors = 0 # максимальное количество делителей
num_with_max_divisors = M # число с наибольшим количеством делителей

for num in range(M, N + 1):
num_divisors = 0 # количество делителей текущего числа
for i in range(1, num + 1):
if num % i == 0:
num_divisors += 1
if num_divisors > max_divisors:
max_divisors = num_divisors
num_with_max_divisors = num

print(f"Число {num_with_max_divisors} имеет наибольшее количество делителей ({max_divisors}) в интервале [{M}, {N}]")

Вторая задача:

import math

# процедура для вычисления расстояния между двумя точками
def distance(x1, y1, x2, y2):
return math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)

# координаты четырех точек
x1, y1 = 1, 2
x2, y2 = 5, 6
x3, y3 = 3, 8
x4, y4 = 7, 2

# находим расстояния между всеми парами точек
distances = [
distance(x1, y1, x2, y2),
distance(x1, y1, x3, y3),
distance(x1, y1, x4, y4),
distance(x2, y2, x3, y3),
distance(x2, y2, x4, y4),
distance(x3, y3, x4, y4)
]

# находим максимальное расстояние
max_distance = max(distances)

# находим пары точек, находящиеся на максимальном расстоянии
point_pairs = []
for i in range(4):
for j in range(i + 1, 4):
if distance(eval(f'x{i+1}'), eval(f'y{i+1}'), eval(f'x{j+1}'), eval(f'y{j+1}')) == max_distance:
point_pairs.append((i+1, j+1))

# выводим результаты
print(f"Максимальное расстояние: {max_distance}")
for pair in point_pairs:
print(f"Точки {pair[0]} и {pair[1]} находятся на максимальном расстоянии")
Михаил Удовенко Наглядный пример того что код сгенированный чатботом - лютая дичь