Здравствуйте, DronG, Вы писали:
DG>Можно попробывать следующее (точной оценки временной сложности и расхода памяти не делал): DG>Нужна длинная арифметика то есть работа с большими числами. Каждое новое число последовательности являеться порядковым номером простого числа, то есть мы производим преобразование числа из последовательности в простое число. Далее в нужно производить умножение каждого последующего простого числа на то произведение всех предыдущих, предварительно проверив не встретилось ли такое число на уже раньше. Проверка осуществляеться делением — если на цело то это число у нас уже есть и его добавлять, то есть умножать на уже накопленное произведение не будем. Не трудно организовать счетчик различных чисел так как есть процедура проверки. Загвоздка может быть в формировании простых чисел, хранении конечного произведения (так как чисел всего 2^32 может и хватить — все ж таки не 2^64 как в случае с другой структоруой данных)
DG>Вобщем можно попробывать, рекомендую просмотреть теорию чисел, арифметку по модулю (может удасться теряя точность повысить плотность хранения) и другие похожие темы.
Насчет ограничений по памяти — это будет произведение из 4 миллиардов простых чисел (в худшем случае). Занимать оно будет по самой грубой оценке (log P) * (4 миллиарда), бит где P — максимальное число. Памяти явно не хватит. Но идея интересная, попробую посмотреть.