Как найти наименьший натуральный делитель питон

Найдите самый маленький натуральный делитель числа x, отличный от 1 (2 <= x <= 30000).

Входные данные
Вводится натуральное число x.

Выходные данные
Выведите наименьший делитель числа x, отличный от 1.

Хотел бы узнать, возможно ли решение без использования break?

x = int(input())

for i in range(2, x + 1):
    if x % i == 0:
        print(i)
        break

Riita

3 / 2 / 1

Регистрация: 07.09.2017

Сообщений: 27

1

09.09.2017, 17:25. Показов 193333. Ответов 14

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Есть задача: Дано целое число, не меньшее 2. Выведите его наименьший натуральный делитель, отличный от 1.

Пыталась, написала так, только получается не наименьший делитель, а все возможные делители отличные от 1 :с

Python
1
2
3
4
5
6
n = int(input())
i = 1
while i <= n:
    i = i + 1
    if n % i == 0:
        print(i)

Помогите решить, чтоб выводило только наименьший



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

09.09.2017, 17:25

14

Dominatrix

33 / 30 / 16

Регистрация: 21.01.2014

Сообщений: 101

09.09.2017, 21:57

2

Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

Ну, как бы всё очевидно — нужно всего лишь выйти из цикла при обнаружении первого (он и есть наименьший) делителя:

Python
1
2
3
4
5
while i <= n:
    i = i + 1
    if n % i == 0:
        print(i)
        break



0



3 / 2 / 1

Регистрация: 07.09.2017

Сообщений: 27

09.09.2017, 22:05

 [ТС]

3

Спасибо) Упс, забыла про break Просто на курсе объяснялось, что эту команду лучше не использовать, или здесь больше нет вариантов?



0



easybudda

Модератор

Эксперт PythonЭксперт JavaЭксперт CЭксперт С++

11758 / 7258 / 1720

Регистрация: 25.07.2009

Сообщений: 13,272

09.09.2017, 22:25

4

Цитата
Сообщение от Riita
Посмотреть сообщение

Просто на курсе объяснялось, что эту команду лучше не использовать

Как-нибудь обосновывали, или нужно было на слово поверить?

Цитата
Сообщение от Riita
Посмотреть сообщение

или здесь больше нет вариантов?

Да полно!

Python
1
2
3
4
5
6
7
8
9
10
>>> def min_divider(n, d=2):
...   return d if n % d == 0 else min_divider(n, d + 1)
...
>>> min_divider(6)
2
>>> min_divider(7)
7
>>> min_divider(25)
5
>>>

только надо убедиться, что переданное число не меньше двух…



1



3 / 2 / 1

Регистрация: 07.09.2017

Сообщений: 27

09.09.2017, 22:41

 [ТС]

5

Ну вот решила поверить, думала люди создавшие видео-курс говорят только правильные вещи и надо их беспрекословно слушать :D
Я это еще не прошла, дошла только до цикла while пока, спасибо :)



0



easybudda

Модератор

Эксперт PythonЭксперт JavaЭксперт CЭксперт С++

11758 / 7258 / 1720

Регистрация: 25.07.2009

Сообщений: 13,272

09.09.2017, 23:11

6

Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

Цитата
Сообщение от Riita
Посмотреть сообщение

Ну вот решила поверить

«Верить нельзя никому, даже самому себе! Мне можно…» (с)

Цитата
Сообщение от Riita
Посмотреть сообщение

дошла только до цикла while

Python
1
2
3
4
5
6
7
8
9
>>> n = int(input("Number greater than 1: "))
Number greater than 1: 625
>>> i = 2
>>> while n % i:
...   i += 1
...
>>> print(i)
5
>>>



0



3 / 2 / 1

Регистрация: 07.09.2017

Сообщений: 27

09.09.2017, 23:39

 [ТС]

7

Эм, не пойму почему после n % 1 нет = и какого-то результата и как в принципе работает этот код, что он дает правильный ответ? ._.



0



33 / 30 / 16

Регистрация: 21.01.2014

Сообщений: 101

09.09.2017, 23:45

8

не пойму почему после n % 1 нет = и какого-то результата

n % i эквивалентно n % i == 1



1



3 / 2 / 1

Регистрация: 07.09.2017

Сообщений: 27

09.09.2017, 23:51

 [ТС]

9

Ааа, теперь ясно, буду знать



0



Модератор

Эксперт PythonЭксперт JavaЭксперт CЭксперт С++

11758 / 7258 / 1720

Регистрация: 25.07.2009

Сообщений: 13,272

10.09.2017, 00:37

10

Цитата
Сообщение от Riita
Посмотреть сообщение

Ааа, теперь ясно, буду знать

Немного не так: результат выражения равный нулю трактуется как False, неравный — True



0



tana256

0 / 0 / 0

Регистрация: 01.01.2019

Сообщений: 2

01.01.2019, 19:18

11

Начала изучать Python, помогите пожалуйста, с поиском ошибки в задачи. Система выдает сообщение на 14 тесте: «Превышено максимальное время работы» и оценивает 13 баллов из 100

Python
1
2
3
4
5
n=int(input())
i = 2
while n%i!=0:
    i+= 1
print(i)

Миниатюры

Найти наименьший делитель числа, отличный от 1
 



0



0 / 0 / 0

Регистрация: 01.01.2019

Сообщений: 2

01.01.2019, 21:34

12

Пересмотрела все варианты которые выше и в похожых темах, этот ответ система оценила наибольшим количеством балов 13.
Другие варианты оценивает на 6 баллов или 0.



0



Модератор

Эксперт PythonЭксперт JavaЭксперт CЭксперт С++

11758 / 7258 / 1720

Регистрация: 25.07.2009

Сообщений: 13,272

02.01.2019, 06:03

13

Цитата
Сообщение от tana256
Посмотреть сообщение

«Превышено максимальное время работы»

Вообще для интерпретируемого языка проблема скорее надуманная… Но в принципе можно и ускорить.
Если известно максимально возможное число и можно выполнять инициализирующий код, нужно составить список из простых чисел начиная с 2 и до квадратного корня из максимально возможного значения включительно. Заданное число проверять на делимость на простые числа — так будет заметно быстрее.
Можно немного ускорить проверив сначала число на чётность, а при отрицательном результате делить только на нечётные числа. Способ далёк от идеального — если число не делится на 5 (к примеру), то и на 15 оно точно не разделится, но всё-таки нечётных чисел значительно меньше…



1



Alexey_Boroduli

1 / 1 / 0

Регистрация: 24.02.2019

Сообщений: 8

24.02.2019, 16:50

14

Дано целое число, не меньшее 2. Выведите его наименьший натуральный делитель, отличный от 1.

Python
1
2
3
4
5
a=int (input())
i=2
while a%i!=0:
    i+=1
print (i)



1



Ergo_py

2 / 2 / 0

Регистрация: 24.08.2020

Сообщений: 15

25.08.2020, 09:49

15

Python
1
2
3
4
5
6
7
8
9
10
a = int(input())
b = a - 1
while a < 2:
    print('Number need to be more than "2"')
    a = int(input())
while a % b != 0:
    b = b - 1
if a % b == 0:
    b = a // b
    print(b)



2



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

25.08.2020, 09:49

Помогаю со студенческими работами здесь

Дано натуральное число. Найти его наименьший делитель, отличный от 1
Дано натуральное число.
Найти его наименьший делитель, отличный от 1

Дано натуральное число. Найти его наименьший делитель, отличный от 1
Дано натуральное число.
Найти его наименьший делитель, отличный от 1

Выведите наименьший натуральный делитель, отличный от 1
Дано целое число, не меньшее 2. Выведите его наименьший натуральный делитель, отличный от 1.нужно…

Дано натуральное число n1. Выведите его наименьший делитель, отличный от 1
Дано натуральное число n1. Выведите его наименьший делитель, отличный от 1.

Решение оформите в…

Дано целое число, не меньшее 2. Выведите его наименьший натуральный делитель, отличный от 1
напишите пожалуйста код и желательно разъясните его…
Дано целое число, не меньшее 2. Выведите…

Дано целое число, не меньшее 2. Выведите его наименьший натуральный делитель, отличный от 1
Помогите пожалуйста решить задачу

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

Или воспользуйтесь поиском по форуму:

15

Skip to content

Задача «Минимальный делитель»

Условие

Дано целое число, не меньшее 2. Выведите его наименьший натуральный делитель, отличный от 1.

Решение задачи от разработчиков на Python:

Другое решение задачи на Python:

Смотреть видео — Задача «Минимальный делитель» решение на Python

Делитесь с друзьями ссылкой на ответ и задавайте вопросы в комментариях! 👇

Related Posts

Посмотреть все комментарии

wpDiscuz

0

Оставьте комментарий! Напишите, что думаете по поводу статьи.x

Не слишком ли это простой вопрос? Очевидно, что надо лишь делить циклически на числа, начиная с 2, и проверять — делят ли они исходное число.

for i in range(2, x+1):
    if not x % i:
        print(i)
        break

Если число большое, то лучше остановить цикл на корне от x:

import math
for i in range(2, int(math.sqrt(x))+1):
    if not x % i:
        print(i)
        break
else:
    print(x)

Описание задачи

Эта программа принимает на вход целое число и выводит его наименьший делитель.

Решение задачи

  1. Принимаем на вход целое число, введенное пользователем, и записываем его в переменную.
  2. Используем цикл for, значения которого варьируются в диапазоне от 2 до данного целого числа.
  3. Если число из этого диапазона делит данное число без остатка, оно добавляется в специально созданный для этого список.
  4. Затем список сортируется и минимальное число из него выводится на экран.
  5. Конец.

Исходный код

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

n = int(input("Введите целое число:"))
a = []
for i in range(2, n+1):
    if(n % i == 0):
        a.append(i)
a.sort()
print("Наименьший делитель равен:", a[0])

Объяснение работы программы

  1. Пользователь вводит целое число, которое записывается в переменную.
  2. Задаем цикл for от 2 до введенного числа.
  3. Если остаток от операции деления равен 0, это означает, что данное число является делителем. Эта проверка осуществляется при помощи оператора деления по модулю %.
  4. После этого данный делитель добавляется в список.
  5. Затем список сортируется и его минимальный элемент выводится на экран.

Результаты работы программы

Пример 1:
Введите целое число:75
Наименьший делитель равен: 3
 
Пример 2:
Введите целое число:64
Наименьший делитель равен: 2

Понравилась статья? Поделить с друзьями:
  • Как составить систематическое положение
  • Как найти свою электронную почту гугл
  • Как найти работу молодому юристу
  • Как найти конусность черчение
  • Как найти квартиру в абхазии