С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/163: Рейтинг темы: голосов - 163, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 24.04.2018
Сообщений: 2

Гиперпростое число

24.04.2018, 19:57. Показов 33917. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Простое число называется гиперпростым, если любое число, получающееся из него откидыванием нескольких последних цифр, тоже является простым. Например, число 733 -– гиперпростое, так как и оно само, и числа 73 и 7 -– простые. Напишите программу, которая определяет, верно ли, что переданное ей число N – гиперпростое. Используйте функции. Учтите, что число 1 не считается простым.

Входные данные
Входная строка содержит натуральное число N .

Выходные данные
Программа должна вывести слово 'YES', если переданное её число – гиперпростое, и слово 'NO', если это число не гиперпростое.

Примеры
входные данные
733
выходные данные
YES

входные данные
1734
выходные данные
NO


Помогите найти ошибку
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def simple(n):
    k = 2
    while k*k <= n and n % k != 0:
        k += 1
    return (k*k > n)
 
 
def gipersimple(n):
    c = 0
    if simple(n) is False:
        return False
    else:
        for i in range(1, int(len(str(n)))):
            if simple(n % 10**i) is True and simple(n // 10**i) is True:
                c += 1
                return True
                break
        if c == 0:
            return False
 
 
if gipersimple(int(input())) is True:
    print('YES')
else:
    print('NO')
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.04.2018, 19:57
Ответы с готовыми решениями:

Гиперпростое число
Простое число называется гиперпростым, если любое число, получающееся из него откидыванием нескольких последних цифр, тоже является...

Гиперпростое число
Простое число называется гиперпростым, если любое число, получающееся из него откидыванием нескольких последних цифр, тоже является...

Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число», «положительное нечетное число» и т. д.
Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число», «положительное нечетное число» и т. д. ...

9
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.04.2018, 23:15
Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
>>> def is_prime(n):
...     if n % 2 == 0 and n > 2:
...         print('not prime')
...         return False
...     for i in range(3, int(math.sqrt(n)) + 1, 2):
...         if n % i == 0:
...             print('not prime')
...             return False
...     print('prime')
...     return True
...
>>> def is_hyper_prime(n):
...     while n > 0:
...         print("checking", n, end=' ... ')
...         if not is_prime(n):
...             return False
...         n = n // 10
...     return True
...
>>>
>>>
>>>
>>> is_hyper_prime(733)
checking 733 ... prime
checking 73 ... prime
checking 7 ... prime
True
>>> is_hyper_prime(1734)
checking 1734 ... not prime
False
>>>
1
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
24.04.2018, 23:30
Вы зачем-то проверяете с двух концов, а ведь нужно только с одного.
0
0 / 0 / 0
Регистрация: 24.04.2018
Сообщений: 2
25.04.2018, 16:18  [ТС]
Цитата Сообщение от Jabbson Посмотреть сообщение
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
>>> def is_prime(n):
...     if n % 2 == 0 and n > 2:
...         print('not prime')
...         return False
...     for i in range(3, int(math.sqrt(n)) + 1, 2):
...         if n % i == 0:
...             print('not prime')
...             return False
...     print('prime')
...     return True
...
>>> def is_hyper_prime(n):
...     while n > 0:
...         print("checking", n, end=' ... ')
...         if not is_prime(n):
...             return False
...         n = n // 10
...     return True
...
>>>
>>>
>>>
>>> is_hyper_prime(733)
checking 733 ... prime
checking 73 ... prime
checking 7 ... prime
True
>>> is_hyper_prime(1734)
checking 1734 ... not prime
False
>>>
Ваша функция возвращает True при вводе 1, 2, 11, что не соответствует условию задачи.

Добавлено через 44 минуты
Сделал вот так. Теперь все верно. Всем спасибо.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def simple(n):
    k = 2
    while k*k <= n and n % k != 0:
        k += 1
    if n < 2: return False
    else: return (k*k > n)
 
def gipersimple(n):
    while n > 0:
        if not simple(n):
            return False
        n //= 10
    return True
 
if gipersimple(int(input())) is True:
    print('YES')
else:
    print('NO')
0
 Аватар для FilArt97
37 / 36 / 16
Регистрация: 11.03.2018
Сообщений: 95
25.04.2018, 20:45
Можно намного ускорить, если сразу отсеивать числа, первая цифра в которых равна 1, 4, 6, 8 или 9
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
26.04.2018, 05:54
Цитата Сообщение от vikkka Посмотреть сообщение
Ваша функция возвращает True при вводе 1, 2, 11, что не соответствует условию задачи.
ну ладно, с 1 и 11 еще более менее понятно, а 2-то почему не гиперпростое?

Добавлено через 4 часа 50 минут
Цитата Сообщение от vikkka Посмотреть сообщение
if gipersimple(int(input())) is True:
еще сверху - is True - излишне, можно убрать.

принт можно сократить по принципу

Python
1
2
3
4
5
6
7
8
9
>>> something_true = True
>>>
>>> print("Yes" if something_true else "No")
Yes
>>>
>>> something_true = False
>>>
>>> print("Yes" if something_true else "No")
No
еще
операторы мат. действий по приоритету выше операторов сравнения, поэтому скобки в return первой функции тоже излишни.
0
0 / 0 / 0
Регистрация: 15.10.2022
Сообщений: 16
24.04.2023, 19:57
Проверяйте пробелы!!!
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def prosto(n):
if (n<=2):
return true
if n%2==0:
return false
else:
k=3
while(k<n//2):
if (n%k)==0:
return false
k+=2
return true
def giperprosto(n):
if not prosto(n):
return false
else:
while(True):
if (n==0):
break
n=n//10
if not prosto(n):
return false
return true
n = int(input('Введите натуральное число:'))
giperprosto(n)
if giperprosto(n):
print("Число гиперпростое")
else:
print("Число не гиперпростое")
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
26.04.2023, 15:42
Рика07, что выкладываешь?
0
Вирусоборец
 Аватар для thyrex
14439 / 7481 / 1579
Регистрация: 06.09.2009
Сообщений: 27,119
26.04.2023, 17:33
Рика07, шикарная проверка на простоту числа
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
26.04.2023, 21:17
Цитата Сообщение от thyrex Посмотреть сообщение
шикарная проверка на простоту числа
ну, не совсем смешно... это, скорее, неверная реализация, чего-то типа такого:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def is_prime(n):
    n = int(n)
    if n == 1:
        return False
    elif n == 2:
        return True
    elif n % 2 != 0:
        i = 3
        while i <= int(n ** .5):
            if n % i == 0:
                return False
            i += 2
        return True
    else:
        return False
    
print([x for x in range(1,1001) if is_prime(x)])
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.04.2023, 21:17
Помогаю со студенческими работами здесь

Сколько существует программ, которые число a преобразуют в число b,а затем это число преобразуют в число c
Нужно написать общую программу,решающую задачу. У исполнителя две команды, которым присвоены номера: Прибавить 1 Умножить на 2 ...

Написать программу «Угадай число». Человек загадывает целое число, компьютер угадывает это число
Написать программу «Угадай число». Человек загадывает целое число, компьютер угадывает это число.

Вывести строку-описание вида «отрицательное четное число», «нулевое число», «положительное нечетное число» и т. д.
Составьте метод, который принимает в качестве параметра целое число. Вывести его строку-описание вида «отрицательное четное число»,...

Напишите программу, которая, зная число попугаев S и число дней N, вычисляет число различающихся коллекций C
Дан и Елена увлечены попугаями. Их страсть появляется по-разному: будучи владельцем зоомагазина, Дан открывает отдел по продаже попугаев,...

Дано двухзначное число. Найти число десятков, число единиц в нем, произведение его цифр
Помогите плиз=)) Дано двухзначное число. Найти число десятков ,число едениц в нем, произвеление его цыфр


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru