Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 0. Задача о нахождении всех делителей числа.
- def factorize(num):
- sp = []
- for i in range(2, int(num ** 0.5) + 1):
- while num % i == 0:
- sp.append(i)
- num //= i
- if num != 1:
- sp.append(num)
- return sp
- def divisors(sp):
- divide = [1]
- for i in sp:
- for j in range(len(divide)):
- divide.append(divide[j] * i)
- return sorted(list(set(divide)))
- num = int(input("Введите число: "))
- print("Простые делители числа: ", end="")
- print(*sorted(set(factorize(num))), sep=", ")
- print("Все делители числа: ", end="")
- print(*divisors(factorize(num)), sep=", ")
- 1) Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [126849; 126871], числа, имеющие ровно 4 различных делителя. Выведите эти четыре делителя для каждого найденного числа в порядке возрастания.
- def factorize(num):
- sp = []
- for i in range(2, int(num ** 0.5) + 1):
- while num % i == 0:
- sp.append(i)
- num //= i
- if num != 1:
- sp.append(num)
- return sp
- def all_divisors(sp):
- divide = [1]
- for i in sp:
- for j in range(len(divide)):
- divide.append(divide[j] * i)
- return sorted(list(set(divide)))
- for i in range(126849, 126871 + 1):
- divisors = all_divisors(factorize(i))
- if len(divisors) == 4:
- print(f"Все делители числа {i}: ", end="")
- print(*divisors, sep=", ")
- 32) (Б.С. Михлин) Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [394441; 394505], числа, имеющие максимальное количество различных делителей. Если таких чисел несколько, то найдите минимальное из них. Выведите количество делителей найденного числа и два наибольших делителя в порядке убывания.
- def count_divisors(num):
- counter = 1
- for i in range(2, int(num ** 0.5) + 1):
- if num % i == 0:
- counter += 2
- if i == int(num ** 0.5):
- counter -= 1
- return counter
- def find_divisors(num):
- divis = [num]
- for i in range(int(num ** 0.5), 0, -1):
- if num % i == 0:
- divis.append(i)
- return divis
- divis_num, max_num = 0, 0
- for i in range(394441, 394505 + 1):
- tmp = count_divisors(i)
- if tmp > divis_num:
- divis_num = tmp
- max_num = i
- print(divis_num, *find_divisors(max_num), sep=", ")
- 40) Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [2943444; 2943529], простые числа. Выведите все найденные простые числа в порядке возрастания, слева от каждого числа выведите его номер по порядку.
- def is_prime(num):
- if num == 2:
- return True
- if num < 2 or num % 2 == 0:
- return False
- for i in range(3, int(num ** 0.5) + 1, 2):
- if num % i == 0:
- return False
- return True
- count = 1
- for i in range(2943444, 2943529 + 1):
- if is_prime(i):
- print(f"{count}) {i}")
- count += 1
- 67) (П.Е. Финкель, г. Тимашевск) Уникальным назовём число, если у него только третья и пятая цифры чётные. Для интервала [33333;55555] найдите количество таких чисел, которые не делятся на 6, 7, 8 и разность максимального и минимального из них. В ответе укажите два числа: сначала количество чисел, а потом разность.
- def is_unique(num):
- num_str = str(num)
- even_num = ['0', '2', '4', '6', '8']
- if (num_str[2] in even_num and num_str[4] in even_num) and (
- num_str[0] not in even_num and num_str[1] not in even_num and num_str[3] not in even_num):
- return True
- return False
- min_num, max_num, counter = None, None, 0
- for i in range(33333, 55555 + 1):
- if is_unique(i):
- if i % 6 != 0 and i % 7 != 0 and i % 8 != 0:
- if min_num is None or i < min_num:
- min_num = i
- if max_num is None or i > max_num:
- max_num = i
- counter += 1
- print(f"Counter: {counter}")
- print(f"Difference: {max_num - min_num}")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement