Produkte aufeinanderfolgender Primzahlen

11

Zum Zeitpunkt der Übermittlung an die Sandbox hatte ich den Ruf 17017, den Sie alle als 7 × 11 × 13 × 17, ein Produkt aus 4 aufeinanderfolgenden Primzahlen, faktorisieren können.

Bitte schreiben Sie eine Funktion oder ein Programm, um alle Produkte von zwei oder mehr aufeinanderfolgenden Primzahlen bis zu einer Eingabe-Ganzzahl auszugeben n. Zum Beispiel n=143sollten Sie ausgeben 6, 15, 30, 35, 77, 105, 143(oder ein gleichwertiges Ausgabeformat).

Es gelten die normalen Einschränkungen für E / A und Lücken.

Dies ist , also gewinnt das kürzeste Programm.

Neil
quelle
4
oeis.org/A097889
Robert Fraser
2
Soll die Ausgabe sortiert werden oder nicht?
Fatalize
@Fatalize Ich hatte gemeint, dass es sortiert werden soll, aber ich sehe, dass ich es nicht gut genug spezifiziert habe und es bereits mehrere Antworten gibt, die keine sortierte Liste ausgeben.
Neil

Antworten:

6

Gelee , 14 10 Bytes

(Zweifellos gibt es hier Golf zu spielen! - yep ...)
-4 Bytes dank @Dennis - ersetzen Sie den Check für mehr als n durch einen Bereich

ÆRẆP€ḟÆRfR

Hinweis - Dies ist sowohl äußerst ineffizient als auch die Ergebnisse sind unsortiert.

Testen Sie es bei TryItOnline

Wie?

Æ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)
Jonathan Allan
quelle
2
Du brauchst nicht µund ³; >Ðḟfunktioniert gut für sich. fRist noch kürzer.
Dennis
@ Tennis - Ich erwarte Ihre überlegene Methode. Vielen Dank!
Jonathan Allan
4

MATL , 25 bis 20 Bytes

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

Ansatz ähnlich dem in Jonathan Allans Antwort .

Probieren Sie es online aus!


Alte Version, 25 Bytes

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

Dies erhält die Exponenten der Primfaktorzerlegung für alle Zahlen von 1bis zur Eingabe. Für jeden prüft es:

  1. Wenn alle Exponenten kleiner als 2 sind.
  2. Wenn die Summe aller Exponenten größer als 1 ist.
  3. Das Exponentenarray wird an jedem Ende um eine zusätzliche Null erweitert. Die aufeinanderfolgenden Unterschiede des erweiterten Arrays werden berechnet. Es sollte genau 2 Unterschiede ungleich Null geben.

Wenn die drei Bedingungen erfüllt sind, wird die Nummer angezeigt. Die Ergebnisse sind in aufsteigender Reihenfolge.

Luis Mendo
quelle
4

Javascript (ES6), 105 104 Bytes

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))}

Demo

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)

Arnauld
quelle
2

05AB1E , 17 15 Bytes

L<ØŒ€PD¹>‹ÏDp_Ï

Erläuterung

L<Ø                 # get the first N primes, where N is the input
   Œ                # get all combinations of consecutive primes
    €P              # calculate the product of these sublists
      D¹>‹Ï         # keep only the products less than or equal to N
           Dp_Ï     # keep only those that aren't prime

Probieren Sie es online aus!

Emigna
quelle
1

Pyth, 18 Bytes

f}PTftlY.:fP_YSQ)S

Ein Programm, das eine Ganzzahl in STDIN eingibt und eine Liste von Ganzzahlen druckt.

Probieren Sie es online aus

Wie es funktioniert

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
TheBikingViking
quelle
1

Gelee , 11 Bytes

ÆfÆCI=1Ȧµ€T

Nicht die kürzeste Antwort von Jelly, aber dieser Ansatz ist ziemlich effizient und die Ausgabe ist sortiert.

Probieren Sie es online aus!

Wie es funktioniert

Æ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.
Dennis
quelle