Найдите простое число S, содержащее в себе данное число N.
Опубликовано: 21 Сентября, 2022
Для заданного целого числа N найдите простое число S такое, что все цифры числа N встречаются в непрерывной последовательности. Может быть несколько ответов. Распечатайте любой из них.
Пример:
Input: N = 42
Output: 42013
Explanation: 42013 is a prime and 42 occurs as a contiguous number in it. 15427 is also a correct answer.Input: N = 47
Output: 47
Explanation: 47 itself is a prime
Наивный подход: можно выполнить следующие шаги:
- Перебрать все числа, начиная с N
- Преобразуйте каждое число в строку с помощью функции to_string()
- Проверить наличие необходимой подстроки с помощью функции str.find()
- Если есть какое-либо число, которое имеет N в качестве подстроки и является простым, верните это число
Временная сложность: O(S), где S — требуемое простое число.
Эффективный подход: можно выполнить следующие шаги:
- Можно использовать тот факт, что число со значением до 1e12 между двумя последовательными простыми числами находится не более 464 не простых чисел.
- Расширьте текущее число N , умножив его на 1000.
- После этого перебирайте следующие числа одно за другим и проверяйте каждое из них.
- Если число простое, то выведите это число.
- Легко видеть, что первое условие всегда будет следовать за цифрами, за исключением того, что последние три будут N.
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O(sqrt(N*1000)*300)
Вспомогательное пространство: O(1)