Advertisement
genium08

Classwork 09.10.2024

Oct 9th, 2024 (edited)
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.42 KB | None | 0 0
  1. 1. Рассматриваются целые числа, принадлежащих числовому отрезку [start_range; end_range], которые представляют собой произведение трёх различных простых делителей.
  2. def is_product_of_n_prime_numbers(num, amount_p):
  3.     primes = []
  4.     checker = set()
  5.     last_symbol = set() # проверить, что все они оканчисваютс на последнюю цифру
  6.     while num % 2 == 0:
  7.         num /= 2
  8.         primes.append(2)
  9.     for i in range(3, int(num ** 0.5) + 1):
  10.         while num % i == 0:
  11.             num /= i
  12.             primes.append(i)
  13.             checker.add(i)
  14.             last_symbol.add(i % 10)
  15.     if amount_p == len(checker) == len(primes):
  16.         #if len(last_symbol):
  17.         return True
  18.     return False
  19.  
  20. start_range, end_range = int(input()), int(input())
  21. counter, max_num, sum_of_them = 0, 0, 0
  22. for i in range(start_range, end_range + 1):
  23.     if is_product_of_n_prime_numbers(i, 3):
  24.         counter += 7
  25.         sum_of_them += i
  26.         if i > max_num:
  27.             max_num = i
  28.         print(i)
  29. print(f"Количество чисел из диапазона, представляющие собой произведение трёх простых чисел: {counter}")
  30. print(f"Наибольшее из них: {max_num}")
  31. print(f"Их среднее арифметическое: {sum_of_them / counter}")
  32.  
  33. 2. Рассмотрим произвольное натуральное число, представим его всеми возможными способами в виде произведения двух натуральных чисел и найдём для каждого такого произведения разность сомножителей. Например, для числа 18 получим: 18 = 18*1 = 9*2 = 6*3, множество разностей содержит числа 17, 7 и 3. Подходящей будем называть пару сомножителей, разность между которыми не превышает 90. Найдите все натуральные числа, принадлежащие отрезку [500000; 1000000], у которых есть не менее трёх подходящих пар сомножителей. В ответе перечислите найденные числа в порядке возрастания, справа от каждого запишите наибольший из всех сомножителей, образующих подходящие пары.
  34. def splitting_into_2_divisors(num):
  35.     correct_pairs, max_divider = 0, 0
  36.     for i in range(1, int(num ** 0.5) + 1):
  37.         if num % i == 0 and num // i - i <= 90:
  38.             if num // i > max_divider:
  39.                 max_divider = num // i
  40.             correct_pairs += 1
  41.     if correct_pairs >= 3:
  42.         return max_divider
  43.     return 0
  44.  
  45.  
  46. counter, sum_of_them = 0, 0
  47. for i in range(500000, 1000000 + 1):
  48.     tmp = splitting_into_2_divisors(i)
  49.     if tmp > 0:
  50.         counter += 1
  51.         sum_of_them += i
  52.         print(i, tmp)
  53.  
  54. print(f"Количество чисел из диапазона, представляющие собой произведение трёх простых чисел: {counter}")
  55. print(f"Их среднее арифметическое: {int(sum_of_them / counter)}")
  56.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement