Как найти наименьший делитель отличный от 1

Riita

3 / 2 / 1

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

Сообщений: 27

1

09.09.2017, 17:25. Показов 192595. Ответов 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Эксперт С++

11757 / 7257 / 1720

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

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

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

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



0



easybudda

Модератор

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

11757 / 7257 / 1720

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

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

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Эксперт С++

11757 / 7257 / 1720

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

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

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Эксперт С++

11757 / 7257 / 1720

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

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

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

Голосование за лучший ответ

Полосатый жираф Алик

Искусственный Интеллект

(310648)


2 года назад

НаиМЕНЬШИЙ – не наиБОЛЬШИЙ!
Иди по натуральным числам от 2 до корня из проверяемого числа. И первое, которые подходит, будет ответом. Разве нет?

Александр АлександровУченик (142)

2 года назад

ну вот а как мне вывести именно этот ответ?

Полосатый жираф Алик
Искусственный Интеллект
(310648)
Александр Александров,
Как-как… Как поделилось нацело, так выводишь делитель и заканчиваешь программу. В чём сложность?
Если ничего не нашлось, то пишешь: “Это простое число!”

Минимальный делитель

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками python или задайте свой вопрос.

Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345

Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Делимость натуральных чисел.

Деление – это действие, обратное умножению. Рассмотрим более подробно деление натуральных чисел.

Натуральными числами называют числа, используемые для счета. Каждому количеству предметов счета соответствует некоторое натуральное число. Если предметов для счета нет, то используется число 0, но при счете предметов мы никогда не начинают с 0, и соответственно число 0 нельзя отнести к натуральным. Понятно, что наименьшим натуральное число является единица. Наибольшего натурального числа не существует, потому что каким бы большим не было число, всегда можно прибавить к нему 1 и записать следующее натуральное число.

Разберем простейший пример деления: разделим число 30 на число 5 (остаток при делении числа 30 на число 5 равен 0), по­ сколку 30 = 5 • 6. Значит число 30 делится нацело на число 5. Число 5 — делитель числа 30, а число 30 — кратно числу 5.

Натуральное число k делится нацело на натуральное число n, если найдётся такое натуральное число m, для которого справедливо равенство k =n m.

Или другими словами, чтобы разделить одно число на другое, надо найти такое трете число, которое при умножении на второе дает первое

Если натуральное число k делится нацело на натуральное число n, то число k называют кратным числа ,

число nделителем числа k.

Числа 1, 2, 3, 6, 10, 15, 30 также являются делителями числа 30, а число 30 является кратным каждого из этих чисел. Заметим, что число 30 не делится нацело, например, на число 7. Поэтому число 7 не является делителем числа 30, а число 30 не кратно числу 7.

Выполнив действия по делению говорят: «Число k делится нацело на число n», «Число n является делителем числа k», «Число k кратно числу n», «Число k является кратным числа n».

Легко записать все делители числа 6. Это числа 1, 2, 3 и 6. А можно ли перечислить все числа, кратные числу 6? Числа 6• 1, 6• 2, 6• 3, 6• 4, 6• 5 и т. д. кратны числу 6. Получаем, что чисел, кратных числу 6, — бесконечно много. Поэтому перечислить их все невозможно.

Вообще, для любого натурального числа k каждое из чисел

является кратным числа k.

Наименьшим делителем любого натурального чис­ла k является число 1, а наибольшим делителем — само число k.

Среди чисел, кратных числу k, наибольшего нет, а наименьшее есть — это само число k.

Каждое из чисел 21 и 36 делится нацело на число 3, и их сумма, число 57, также делится нацело на число 3. Вообще, если каждое из чисел k и n делится нацело на число m, то и сумма k + n также делится нацело на число m.

Каждое из чисел 4 и 8 не делится нацело на число 3, а их сумма, число 12, делится нацело на число 3. Каждое из чисел 9 и 7 не делится нацело на число 5, и их сумма, число 16, не делится нацело на число 5. Вообще, если ни число k, ни число n не делятся нацело на число m, то сумма k + n может делиться, а может и не делиться нацело на число m.

Число 35 делится без остатка на число 7, а число 17 на число 7 нацело не делится. Сумма 35 + 17 нацело на число 7 также не делится. Вообще, если число k делится нацело на число m и число n не делится нацело на число m, то сумма k + n не делится нацело на число m.


0 голосов

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


image







спросил

08 Июнь, 20


от
ulianadialektova_zn

(15 баллов)



в категории Математика




1 Ответ


0 голосов






ответил

08 Июнь, 20


от
sharofat0_zn
Специалист

(20.4k баллов)



Лучший ответ

Ответ:

1) 4

2)5

3)3

Найдите наименьший натуральный делитель.


image






оставил комментарий

08 Июнь, 20


от
irinaongonova37_zn

(10 баллов)



хм…. я не знаю почему но я тоже сейчас это решаю и мне сказали что в первом будет 2 а не 4






оставил комментарий

08 Июнь, 20


от
sharofat0_zn
Специалист

(20.4k баллов)



Да,вы совершенно правы. 4 можно прдставить как 2×2 и соответственно наименьший делитель равен 2.






оставил комментарий

08 Июнь, 20


от
sharofat0_zn
Специалист

(20.4k баллов)



Спасибо.

Добавить комментарий