Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 24.07.2021
Сообщений: 25

Определение минимального делителя числа

01.04.2022, 22:10. Показов 1850. Ответов 8

Студворк — интернет-сервис помощи студентам
Доброго времени! решаю задачу на определения минимального делителя числа, и вот хочется мне через рекурсию решить чисто в целях закрепления материала. Вот код:
Python
1
2
3
4
5
6
7
8
9
10
11
import sys
sys.setrecursionlimit(1500)
def MinDivisor(n):
    i = 2
    if n % i == 0:
        print(i)
    else:
        i += 1
        MinDivisor(n)
n = int(input())
print(MinDivisor(n))
Не могу понять почему ругается "if n % i == 0:
RecursionError: maximum recursion depth exceeded in comparison", ВРОДЕ бы все логично.

Помогите пожалуйста. дайте совет
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.04.2022, 22:10
Ответы с готовыми решениями:

Найдите на отрезке числа, у которых 4 четных делителя
на отрезке . Выведите эти четыре делителя в порядке убывания. for i in range(190201,190280+1): sp= for j in...

Вывести все числа последовательности, имеющие ровно три делителя.
Пользователь программы вводит количество элементов последовательности и саму последовательность натуральных чисел. Напишите программу,...

Определение наибольшего общего делителя двух натуральных чисел
Составьте программу определения наибольшего общего делителя двух натуральных чисел

8
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.04.2022, 00:05
Цитата Сообщение от LubavaYak Посмотреть сообщение
ВРОДЕ бы все логично.
Отнюдь.
Вот прилетело тебе в функцию n. Внутри функции ты вызываешь ее же, и ОПЯТЬ ЖЕ С ТЕМ ЖЕ n. И т.д., до бесконечности.
Вывод? Что-то таки надо сделать с n...
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38190 / 21125 / 4307
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 14
02.04.2022, 05:54
Судя по названию, нужно найти минимальный делитель?

Python
1
2
3
4
5
def min_divisor(n,d=2):
    if n%d==0:
        return d
    else:
        return min_divisor(n,d+1)
1
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
02.04.2022, 06:31
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import sys
sys.setrecursionlimit(5000)
 
def MinDivisor(num, ans = 3):
    if num % 2 == 0:
        return 2
    elif num % ans == 0:
        return ans
    elif num < ans*ans:
        return num
    return MinDivisor(num, ans + 2)
 
n = 99460729
 
print(MinDivisor(n))
1
0 / 0 / 0
Регистрация: 24.07.2021
Сообщений: 25
02.04.2022, 09:03  [ТС]
Спасибо за ответы. но я так и не поняла что в моем то коде не так было. с самим то n ничего и не должно происходить, а вот i - сам делитель увеличивается.
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
02.04.2022, 09:54
LubavaYak,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import sys
sys.setrecursionlimit(1500)
 
#def MinDivisor(n):
def MinDivisor(n, i = 2):
    #i = 2
    if n % i == 0:
        print(i)
    else:
        #i += 1        
        MinDivisor(n, i + 1)
        
        
n = int(input())
#print(MinDivisor(n))
MinDivisor(n)
1
Вирусоборец
 Аватар для thyrex
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
02.04.2022, 10:36
Лучший ответ Сообщение было отмечено LubavaYak как решение

Решение

Цитата Сообщение от LubavaYak Посмотреть сообщение
но я так и не поняла что в моем то коде не так было... вот i - сам делитель увеличивается
он должен быть разным в начале выполнения функции, а у Вас всегда перебор начинался с 2. Отсюда и бег по кругу
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38190 / 21125 / 4307
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 14
02.04.2022, 11:33
Цитата Сообщение от LubavaYak Посмотреть сообщение
с самим то n ничего и не должно происходить, а вот i - сам делитель увеличивается
- золотые слова! Но у тебя-то i каждый раз начинается с двойки...
1
0 / 0 / 0
Регистрация: 24.07.2021
Сообщений: 25
02.04.2022, 11:45  [ТС]
Спасибо большое, поняла в чем косяк
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.04.2022, 11:45
Помогаю со студенческими работами здесь

Определение максимального и минимального элемента последовательности
Дана числовая последовательность. Сначала вводится количество чисел, а затем - сами числа(числа целые). Определить максимальный и...

Определение максимального и минимального значения в списке
Дан список . Разработайте программу определения максимального и минимального значений в этом списке. Добавьте в список числа 31 и 56,...

Простая программа для поиска наибольшего просто делителя числа
Сразу скажу, что я новичок в Python. Использую Python 3. Стоит задача найти максимальный простой делитель заданного числа. Посмотрел в...

Определение минимального числа
Здравствуйте. Нужна помощь с функцией. Вводятся оценки критериев по 2. (print...

определение минимального числа
7. Написать программу определения минимального целого числа из произвольного количества введенных значений. На каждом цикле ввода нового...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru