Создайте самую короткую функцию, программу или выражение, которое вычисляет A073329 , т. Е.a(n)
Является n-м числом, имеющим n различных простых множителей. Ввод - это количество элементов в последовательности, которое нужно вернуть. 0 < n
, Я не обеспокоен целочисленной точностью. Я просто хочу алгоритм. Для языков, которые не поддерживают произвольно большие целые числа, мы просто притворимся, что они делают.
Вы можете найти контрольные примеры, перейдя по ссылке на OEIS, приведенной выше.
ОБНОВИТЬ:
Позвольте мне прояснить, что вам нужно возвращать целочисленную последовательность из вашей программы, функции или выражения. Другими словами, f(x)
следует рассчитывать a(n)
для всех n
от 1 до x
. Учитывая x
8, ваша функция должна возвращаться 2, 10, 60, 420, 4290, 53130, 903210, 17687670
в виде массива или другой подходящей структуры данных.
output a(1), ... a(n)
вместо того, чтобы возвращать что-то, как массив ...Ответы:
Питон, 144 символа
Требуется приблизительно 2 минуты, чтобы закончиться для x = 8.
источник
Java, 170 символов в одну строку
Обновление, +77 символов IOL
источник
Ява (Ungolfed)
Использует алгоритм сита. Это довольно быстро. (6 секунд) Точно сработает для upto
8
, вероятно, потерпит неудачу для чего-то более высокого.источник
JavaScript, 149 символов
Чувствует себя не отвечающим при n> = 6, поэтому я не проверял, сколько времени это занимает (мой браузер выдает уведомление о зависшем скрипте каждые 10 секунд или около того, поэтому я не могу точно рассчитать время и не хочу полностью зависать, если я отметьте "не показывать это снова" ...)
Изменить: Чтобы вернуть массив составляет 200 символов (+51) :
источник
J, 32 байта
Но так как я отвечаю на свой собственный вопрос так поздно, мы просто оставим этот ответ из любопытства.
источник