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

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

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

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

Elka29677 Elka29677    1   28.11.2021 17:54    77

Ответы
obzoredy obzoredy  08.01.2024 11:28
Добрый день!

Давайте решим эту задачу шаг за шагом.

Перед нами стоит задача написать программу, которая определяет, является ли заданное число гиперпростым или нет.

Первым шагом нам нужно реализовать функцию, которая будет проверять, является ли число простым. Простое число - это число, которое делится только на 1 и на само себя без остатка. Но в данной задаче нужно исключить число 1, так как оно не считается простым. Вот как будет выглядеть эта функция:

```python
def is_prime(n):
if n == 1:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
```
Эта функция принимает на вход число `n` и проверяет, делится ли оно нацело на все числа в интервале от 2 до корня из `n`. Если делится хотя бы на одно число, то функция возвращает значение `False`, иначе возвращает `True`.

Далее нам нужно реализовать функцию, которая будет проверять, является ли число гиперпростым. Для этого мы будем последовательно откидывать последние цифры числа и проверять каждое полученное число на простоту. Если все полученные числа являются простыми, то число считается гиперпростым. Вот как будет выглядеть эта функция:

```python
def is_hyperprime(n):
str_n = str(n)
for i in range(len(str_n)):
if not is_prime(int(str_n[:len(str_n)-i])):
return False
return True
```
Эта функция принимает на вход число `n`, переводит его в строку, и затем проходит циклом от 0 до длины строки числа `n`. На каждом шагу откидывается последняя цифра числа с помощью среза `str_n[:len(str_n)-i]`, переводится в целое число и передается в функцию `is_prime()` для проверки на простоту. Если хотя бы одно из полученных чисел не является простым, функция возвращает значение `False`, иначе возвращает `True`.

Теперь, когда у нас есть две функции для проверки простоты числа и проверки гиперпростоты числа, мы можем написать основную часть программы. Вот как будет выглядеть основная часть программы:

```python
n = int(input()) # считываем число N
if is_hyperprime(n):
print("YES")
else:
print("NO")
```

В этой программе мы считываем число `n` с помощью функции `input()`, затем вызываем функцию `is_hyperprime()` и в зависимости от ее результата выводим на экран слово "YES" или "NO" с помощью функции `print()`.

Вот, как выглядит полный код программы:

```python
def is_prime(n):
if n == 1:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True

def is_hyperprime(n):
str_n = str(n)
for i in range(len(str_n)):
if not is_prime(int(str_n[:len(str_n)-i])):
return False
return True

n = int(input())
if is_hyperprime(n):
print("YES")
else:
print("NO")
```

Программа готова! Если у вас остались вопросы, не стесняйтесь задавать. Я готов помочь!
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика