Продукти послідовних премій


11

На момент подання в пісочницю я мав 17017 репутацію, яку ви всі зможете розділити як 7 × 11 × 13 × 17, продукт 4 послідовних праймерів.

Будь ласка, напишіть функцію або програму для виведення всіх продуктів двох або більше послідовних простих чисел до цілого числа введення n. Наприклад, дано n=143вам вихід 6, 15, 30, 35, 77, 105, 143(або еквівалентний формат виводу).

Застосовуються звичайні обмеження на введення / виведення та лазівки.

Це , тому виграє найкоротша програма.



2
Чи слід сортувати вихід чи ні?
Фаталізувати

@Fatalize Я мав на увазі його сортування, але я бачу, що я не вказав його досить добре, і вже є кілька відповідей, які не видають відсортований список.
Ніл

Відповіді:


6

Желе , 14 10 байт

(без сумніву, тут потрібно робити гольф! - так ...)
-4 байти завдяки @Dennis - замініть чек на n більше, використовуючи діапазон

ÆRẆP€ḟÆRfR

Зауважте - це і вкрай неефективно, і результати несортовані.

Перевірте це на TryItOnline

Як?

ÆRẆP€ḟÆRfR - main link takes an argument, n
ÆR    ÆR   - primes up to n
  Ẇ        - all sublists
   P€      - product for each
     ḟ     - filter out the primes (since the sublists include those of lnegth 1)
        fR - filter out any not in range [1,N]
             (yep, it's calculating all products of primes up to n - gross)

2
Вам не потрібно µі ³; >Ðḟпрацює чудово самостійно. fRще коротше.
Денніс

@Dennis - Я чекаю твого чудового методу. Дякую!
Джонатан Аллан

4

MATL , 25 20 байт

Zq&Xf"@gnq?2MpG>~?6M

Підхід аналогічний тому, що відповідає у відповіді Джонатана Аллана .

Спробуйте в Інтернеті!


Стара версія, 25 байт

:YF!"@2<@sq0@0hhdz2=v?X@D

Це отримує показники розкладу простих коефіцієнтів для всіх чисел від 1входу. Для кожного він перевіряє:

  1. Якщо всі показники менше 2.
  2. Якщо сума всіх показників більша за 1.
  3. Масив експонентів розширюється додатковим нулем на кожному кінці. Обчислюються послідовні відмінності розширеного масиву. Має бути рівно 2 ненульових різниці.

Якщо три умови виконані, відображається номер. Результати в порядку збільшення.


4

Javascript (ES6), 105 104 байт

n=>{for(i=1,P=[];i++<n;P[P.every(v=>i%v)?i:n]=i);P.map(i=>P.map(j=>j>i&&(p*=j)<=n&&console.log(p),p=i))}

Демо

var f =
n=>{for(i=1,P=[];i++<n;P[P.every(v=>i%v)?i:n]=i);P.map(i=>P.map(j=>j>i&&(p*=j)<=n&&console.log(p),p=i))}

f(143)



1

Піт, 18 байт

f}PTftlY.:fP_YSQ)S

Програма, яка приймає введення цілого числа на STDIN і друкує список цілих чисел.

Спробуйте в Інтернеті

Як це працює

f}PTftlY.:fP_YSQ)S  Program. Input: Q
              SQ    Yield [1, 2, 3, ..., Q]
          fP_Y      Filter that by primality
        .:      )   Yield all sublists of that
    f               Filter the sublists by:
      lY             Length
     t               -1
                    removing sublists of length 1
f                S  Filter [1, 2, 3, ..., Q] (implicit input fill) by:
  PT                 Prime factorisation
 }                   is in the sublists
                    Implicitly print

1

Желе , 11 байт

ÆfÆCI=1Ȧµ€T

Не найкоротша відповідь Jelly, але такий підхід досить ефективний, а вихід сортується.

Спробуйте в Інтернеті!

Як це працює

ÆfÆCI=1Ȧµ€T  Main link. Argument: n

        µ€   Map the preceding chain over each k in [1, ..., n].
Æf             Compute all prime factors of k, with multiplicities.
  ÆC           Count the number of primes less than or equal to each prime factor.
               This maps the j-th to j.
    I          Increments; compute the forward differences of consecutive indices.
     =1        Compare each difference with 1.
       Ȧ       All; return 1 iff the array is non-empty and has no zeroes.
          T  Truth; yield all indices for which the chain returned 1.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.