MATL , 25 bajtów
Działa to dla danych wejściowych do 16
:
10,i:^9/Y[t0)Yftb!w\~s1=)
Następująca wersja wykorzystuje 31 bajtów i działa do 18
. Dla 19
wymaga około 4 GB pamięci (nie udało się go uruchomić).
10,i:^9/Y[t0)5X2Y%Yfotb!w\~s1=)
Przykład
>> matl
> 10,i:^1-,9/t0)5X2Y%Yfotb!w\~s1=)
>
> 6
7 13
Wyjaśnienie
Rozważ wprowadzenie konkretności 6
. Najpierw 111111
obliczane są główne dzielniki ; w tym przypadku wyniki są 3
, 7
, 11
, 13
, 37
. Wtedy operacja modulo (podział reszta) oblicza się dla wszystkich kombinacji liczb 1
, 11
... 111111
i obliczone dzielnikami. Wykorzystuje to ukrytą ekspansję MATL-a. Wynik jest w tym przypadku macierzą 6
x 5
, przy czym każda kolumna odpowiada jednemu z dzielników. Akceptowane dzielniki (kolumny) to te, dla których tylko 1
wartość (a mianowicie ostatnia) daje zero pozostałej.
10,i:^9/Y[ % generate vector with `1`, `11`, ... depending on input number, say "n"
t0) % pick the last element: `111...1` (n ones)
5X2Y% % * convert to uint64, so that larger numbers can be handled
Yf % prime factors
o % * convert to double precision, so that modulus can be done
t % duplicate
b % bubble up element in stack
! % transpose
w % swap elements in stack
\ % modulus after division (element-wise, singleton expansion)
~s % number of zero values in each column
1= % is equal to 1? (element-wise, singleton expansion)
) % index divisors with that logical index
(*) Usunięto w krótkiej wersji
Luis Mendo
źródło
źródło
Odpowiedzi:
Julia, 103 bajty
Jest to nienazwana funkcja, która wywołuje funkcję pomocnika
R
. Aby go wywołać, nadaj głównej funkcji nazwę, npf=n->...
.Nie golfowany:
źródło
LabVIEW, 33 LabVIEW Prymitywy
19 trwa wiecznie ...
Pracuj, zapisując wszystkie liczby pierwsze i usuwając elementy z ostatniego zestawu, gdy zostaną znalezione w drugiej tablicy.
źródło
J, 24 bajty
Oczekuje liczb o rozszerzonej precyzji po 6 (np.
19x
Zamiast19
).Wypróbuj online!
Prawdopodobnie istnieje krótszy sposób generowania powtórek, który pozwala również uniknąć limitów.
Wyjaśnienie
Jak to działa wizualnie
Myślę, że tego rodzaju wizualne wyjaśnienia są łatwiejsze do zniesienia dla tych, którzy nie znają J. To są wyniki REPL.
źródło