Тимофей Мадагаскаров
Профи
(530)
5 дней назад
num = int(input("Введите натуральное число: "))
i = 1
print("Делители числа", num, ":")
while i <= num:
if num % i == 0:
print(i)
i += 1
def get_divisors(number):
# Чтобы делители в списке не повторялись, собираем их в множество
result = {1, number}
# Перебираем диапазон до number // 2, потому что единственный делитель
# больше половины числа — это само число, его мы уже включили в результат
# Чтобы половина тоже вошла в диапазон, добавляем к ней 1
for divisor in range(2, number // 2 + 1):
if number % divisor == 0:
result.add(divisor)
# функция sorted() сортирует делители по возрастанию и возвращает результат в виде списка
return sort
ed(result)
Chromatic Scale
Искусственный Интеллект
(205809)
5 дней назад
Конечно, я помогу вам! Ниже приведена программа на языке Python, которая запрашивает у пользователя число и выводит все числа, на которые оно делится без остатка (то есть его делители).
```python
# Запрашиваем у пользователя ввод числа
number = int(input("Введите целое число: "))
# Проверяем, что число не равно нулю, чтобы избежать деления на ноль
if number == 0:
print("Все целые числа делятся на 0, кроме самого 0.")
else:
divisors = [] # Список для хранения делителей
# Проходим по всем числам от 1 до абсолютного значения числа
for i in range(1, abs(number) + 1):
if number % i == 0:
divisors.append(i)
# Выводим результат
print(f"Число {number} делится на следующие числа: {divisors}")
```
### Пояснение программы:
1. **Ввод числа:**
```python
number = int(input("Введите целое число: "))
```
Программа запрашивает у пользователя ввод целого числа и преобразует его из строки в целое число с помощью `int()`.
2. **Проверка на ноль:**
```python
if number == 0:
print("Все целые числа делятся на 0, кроме самого 0.")
```
Деление на ноль не определено, поэтому программа проверяет, не является ли введенное число нулем, и выводит соответствующее сообщение.
3. **Поиск делителей:**
```python
divisors = []
for i in range(1, abs(number) + 1):
if number % i == 0:
divisors.append(i)
```
- Создается пустой список `divisors` для хранения делителей.
- Цикл проходит по всем числам от 1 до абсолютного значения введенного числа (`abs(number) + 1`), чтобы учесть также отрицательные делители, если это необходимо.
- Если остаток от деления `number` на `i` равен нулю (`number % i == 0`), то `i` является делителем и добавляется в список `divisors`.
4. **Вывод результата:**
```python
print(f"Число {number} делится на следующие числа: {divisors}")
```
Программа выводит введенное число и список его делителей.
### Пример работы программы:
```
Введите целое число: 12
Число 12 делится на следующие числа: [1, 2, 3, 4, 6, 12]
```
```
Введите целое число: -15
Число -15 делится на следующие числа: [1, 3, 5, 15]
```
```
Введите целое число: 0
Все целые числа делятся на 0, кроме самого 0.
```
### Дополнительные улучшения:
- **Учёт отрицательных делителей:**
Если вы хотите также вывести отрицательные делители, можно расширить список `divisors` следующим образом:
```python
divisors = []
for i in range(1, abs(number) + 1):
if number % i == 0:
divisors.append(i)
divisors.append(-i)
divisors = sorted(divisors)
```
Это добавит как положительные, так и отрицательные делители, а затем отсортирует список.
- **Обработка некорректного ввода:**
Чтобы сделать программу более устойчивой, можно добавить обработку исключений на случай, если пользователь введет не целое число:
```python
try:
number = int(input("Введите целое число: "))
# Остальной код
except ValueError:
print("Ошибка: введено не целое число.")
```
Надеюсь, это поможет вам! Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться.