Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Задание 1: Поиск чисел с нечётными делителями
- Напечатать числа в диапазоне [140 * 10^6; 170 * 10^6], которые имеют ровно 5 различных нечётных делителей. У таких чисел может быть произвольное количество чётных делителей.
- Замечание: Число может иметь ровно 5 нечётных делителей только в том случае, если оно имеет единственное нечётное простое число в 4 степени.
- def eratosthenes_sieve(n):
- """Возвращает список простых чисел до n."""
- is_prime = [True] * (n + 1)
- for i in range(2, n + 1):
- if is_prime[i]:
- for j in range(2 * i, n + 1, i):
- is_prime[j] = False
- return [i for i in range(3, n + 1) if is_prime[i]]
- # Задаем диапазон
- start_range = 140 * 10 ** 6
- end_range = 170 * 10 ** 6
- # Находим числа с 5 нечётными делителями
- max_prime = int(end_range ** 0.25) + 1
- primes = eratosthenes_sieve(max_prime)
- for p in primes:
- num = p ** 4
- while num <= end_range:
- if num >= start_range:
- # Печатаем результаты
- print(num, end=' ')
- num *= 2
- Задание 2: Поиск чисел по маске
- Напечатать все числа, которые меньше 10^10, соответствующие маске 3*5?27?, и кратные 9172. Здесь:
- * — любое количество любых цифр
- ? — одна любая цифра
- counter = 0
- for n1 in range(0, 10000):
- for n2 in range(0, 10):
- for n3 in range(0, 10):
- str1 = str(n1).zfill(4) # добавляем ведущие нули
- num = int(f"3{str1}5{n2}27{n3}")
- if num % 9172 == 0:
- counter += 1
- print(num)
- print(f"Всего найдено: {counter} чисел.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement