Хорошо, используйте BigInteger
везде, где у вас есть long
. Вместо %
вы будете использовать mod
, вместо увеличения вы будете использовать i = i.add(BigInteger.ONE)
, вместо == 0 вы будете использовать equals(BigInteger.ZERO)
и т. Д.
Используйте Scanner.nextBigInteger
вместо Scanner.nextLong
тоже.
Учитывая, что это похоже на домашнее задание некоторого описания (возможно, самоопределения, конечно), я не буду выписывать весь код для вас - но если у вас есть конкретные проблемы, не стесняйтесь спрашивать.