Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. Рассматриваются целые числа, принадлежащих числовому отрезку [start_range; end_range], которые представляют собой произведение трёх различных простых делителей.
- def is_product_of_n_prime_numbers(num, amount_p):
- primes = []
- checker = set()
- last_symbol = set() # проверить, что все они оканчисваютс на последнюю цифру
- while num % 2 == 0:
- num /= 2
- primes.append(2)
- for i in range(3, int(num ** 0.5) + 1):
- while num % i == 0:
- num /= i
- primes.append(i)
- checker.add(i)
- last_symbol.add(i % 10)
- if amount_p == len(checker) == len(primes):
- #if len(last_symbol):
- return True
- return False
- start_range, end_range = int(input()), int(input())
- counter, max_num, sum_of_them = 0, 0, 0
- for i in range(start_range, end_range + 1):
- if is_product_of_n_prime_numbers(i, 3):
- counter += 7
- sum_of_them += i
- if i > max_num:
- max_num = i
- print(i)
- print(f"Количество чисел из диапазона, представляющие собой произведение трёх простых чисел: {counter}")
- print(f"Наибольшее из них: {max_num}")
- print(f"Их среднее арифметическое: {sum_of_them / counter}")
- 2. Рассмотрим произвольное натуральное число, представим его всеми возможными способами в виде произведения двух натуральных чисел и найдём для каждого такого произведения разность сомножителей. Например, для числа 18 получим: 18 = 18*1 = 9*2 = 6*3, множество разностей содержит числа 17, 7 и 3. Подходящей будем называть пару сомножителей, разность между которыми не превышает 90. Найдите все натуральные числа, принадлежащие отрезку [500000; 1000000], у которых есть не менее трёх подходящих пар сомножителей. В ответе перечислите найденные числа в порядке возрастания, справа от каждого запишите наибольший из всех сомножителей, образующих подходящие пары.
- def splitting_into_2_divisors(num):
- correct_pairs, max_divider = 0, 0
- for i in range(1, int(num ** 0.5) + 1):
- if num % i == 0 and num // i - i <= 90:
- if num // i > max_divider:
- max_divider = num // i
- correct_pairs += 1
- if correct_pairs >= 3:
- return max_divider
- return 0
- counter, sum_of_them = 0, 0
- for i in range(500000, 1000000 + 1):
- tmp = splitting_into_2_divisors(i)
- if tmp > 0:
- counter += 1
- sum_of_them += i
- print(i, tmp)
- print(f"Количество чисел из диапазона, представляющие собой произведение трёх простых чисел: {counter}")
- print(f"Их среднее арифметическое: {int(sum_of_them / counter)}")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement