Так как это домашнее задание ...
В BigInteger есть метод, проверяющий на простоту. Это намного быстрее, чем пытаться разложить число на множители. (Если вы выберете подход, предусматривающий попытку факторизации 100-значных чисел, вы потерпите неудачу. Факторизация считается NP-полной проблемой. Конечно, не существует известного решения за полиномиальное время .)
Вопрос состоит в том, чтобы задать простое число, которое содержит данную последовательность цифр, когда оно представлено в виде последовательности десятичных цифр.
Подход генерации «случайных» простых чисел и последующего тестирования, содержат ли они эти цифры, невозможен. (Некоторые простые математики средней школы говорят вам, что вероятность того, что случайно сгенерированное 100-значное число содержит заданную последовательность из 18 цифр, составляет ... 82/10 18 . И вы еще не проверяли на простоту. ..
Но есть еще один способ сделать это ... подумать об этом!
Начинайте писать код только после того, как в своей голове вы поймете, как будет работать ваш алгоритм, и сделаете мысленные оценки, чтобы подтвердить, что он даст ответ в разумные сроки.
Когда я говорю «неосуществимое», я имею в виду «неосуществимое» для вас. Учитывая достаточно большое количество компьютеров, достаточное количество времени и некоторую мощную математику, может быть в состоянии сделать некоторые из этих вещей. Таким образом, технически они могут быть вычислительно осуществимыми. Но они не осуществимы как домашнее задание. Я уверен, что цель этого упражнения - заставить вас подумать о том, как сделать это умным способом ...