Python
Pyrhon. Вложенные циклы. Без использования словарей, списков, строк, функций пользователя
Даны два натуральных числа a и b. Найдите все числа, принадлежащие отрезку [a; b], имеющие ровно 4 различных делителя. Выведите эти делители для каждого найденного числа в порядке возрастания.
С оптимизацией:
Но по-моему ещё быстрее можно. Без словарей, списков и функций пользователя - это слишком большое ограничение - я могу, конечно, и так, но что-то мне не хочется...
from math import ceil
def deli(n):
d, m = [], ceil(n**0.5)
for i in range(1, m):
if n % i == 0:
d.append(i); d.append(n // i)
if m * m == n: d.append(m)
return sorted(d)
a, b = map(int, input('a b: ').split())
for i in range(a, b + 1):
deliteli = deli(i)
if len(deliteli) == 4:
print(str(i) + ':', *deliteli)
Так легко находятся нужные числа даже бòльшие триллиона:
def find_numbers_with_four_divisors(a, b):
for i in range(a, b+1):
divisors = []
for j in range(1, i+1):
if i % j == 0:
divisors.append(j)
if len(divisors) == 4:
print(i, divisors)
find_numbers_with_four_divisors(1, 1000)
Для решения данной задачи можно использовать вложенные циклы. Нам нужно перебрать все числа на отрезке [a; b] и проверить, имеют ли они ровно 4 различных делителя. Для этого мы можем использовать два вложенных цикла, в которых будем перебирать делители для каждого числа на отрезке.
Пример кода на Python:
a = int(input()) # Начало отрезка
b = int(input()) # Конец отрезка
for num in range(a, b + 1): # Перебираем числа на отрезке
divisors = [] # Список делителей
for divisor in range(1, num + 1): # Перебираем делители
if num % divisor == 0: # Проверка делимости
divisors.append(divisor) # Добавляем делитель в список
if len(divisors) == 4: # Проверка на 4 различных делителя
print(num, ":", *divisors) # Выводим результат
Пример кода на Python:
a = int(input()) # Начало отрезка
b = int(input()) # Конец отрезка
for num in range(a, b + 1): # Перебираем числа на отрезке
divisors = [] # Список делителей
for divisor in range(1, num + 1): # Перебираем делители
if num % divisor == 0: # Проверка делимости
divisors.append(divisor) # Добавляем делитель в список
if len(divisors) == 4: # Проверка на 4 различных делителя
print(num, ":", *divisors) # Выводим результат
Похожие вопросы
- Python. Вложенные циклы. Решение без использования функций(def;len; и тд)
- Помогите разобраться и объяснить принцип действия цикла поиска простых чисел в Pyrhon
- 4 задачи по темам:Массивы,Строки,Циклы,условный оператор
- Python. Решение без функции def, словарей и списков
- Работа со списками Python. В одну строку.
- Min\max . Заполнения списка с помощью цикла while.
- Питон, циклы, функция range
- Python. Использование стандартных методов работы со списками(для чайников)
- Задача в Python? Помогите решить, не получается! Решить нужно без функций и методов. Только циклы и условные операторы.
- Pyton Объединение словарей в питоне, если ключи второго равны значениям первого