Gli ordini abeliani


17

Qualche sfondo

In matematica, un gruppo è una tupla ( G , •) dove G è un set e • è un'operazione G tale che per ogni coppia di elementi x e y in G , xy è anche in G .

Per alcuni x , y , z in G , gli assiomi di gruppo di base sono i seguenti:

  • G è chiuso sotto •, ovvero xy in G
  • L'operazione • è associativa , ovvero x • ( yz ) = ( xy ) • z
  • G ha un elemento identitario , cioè esiste e in G tale che xe = x per tutti x
  • • l'operazione è invertibile , cioè esiste un , b in G tale che unx = y e yb = x

Va bene, quindi quelli sono gruppi. Ora abbiamo definito un gruppo abeliano come un gruppo ( G , •) tale che • è un'operazione commutativa . Cioè, xy = yx .

Ultima definizione L' ordine di un gruppo ( G , •), indicato con | G |, è il numero di elementi nel set G .

Compito

Gli ordini abeliani sono numeri interi n tali che ogni gruppo dell'ordine n è abeliano. La sequenza degli ordini abeliani è A051532 in OEIS. Vostro compito è quello di produrre il n esimo termine di questa sequenza (1-indicizzato) dato un intero n . È necessario supportare l'input fino al numero intero più grande in modo tale che nulla trabocchi.

L'input può provenire da argomenti di funzioni, argomenti della riga di comando, STDIN o qualunque cosa sia conveniente.

L'output può essere restituito da una funzione, stampato su STDOUT o qualsiasi altra cosa sia conveniente. Nulla dovrebbe essere scritto su STDERR.

Il punteggio è il numero di byte, le vittorie più brevi.

Esempi

Ecco i primi 25 termini della sequenza:

1, 2, 3, 4, 5, 7, 9, 11, 13, 15, 17, 19, 23, 25, 29, 31, 33, 35, 37, 41, 43, 45, 47, 49, 51

Risposte:


6

CJam ( 35 32 byte)

0q~{{)_mF_z~2f>@::#@m*::%+1&}g}*

Demo online

Dissezione

Per riformulare alcune delle informazioni in OEIS, gli ordini abeliani sono privi di cubi ordini nilpotenti ; e gli ordini nilpotenti sono i numeri nper i quali nessun divisore di potere primo p^k | nè congruente con 1un altro divisore principale.

Se superiamo il test privo di cubi, il test di nilpotenza si riduce a

  • Nessun fattore primo è uguale al 1modulo un altro fattore primo
  • Se la molteplicità di prime pè k,p^k non deve essere uguale a 1modulo un altro fattore primo.

Ma poi la seconda condizione implica la prima, quindi possiamo ridurla a

  • Se la molteplicità di prime pè k, p^knon deve essere uguale1modulo un altro fattore primo.

Nota che la parola "altro" non è necessaria, perché p^a == 0 (mod p)per a > 0.

0q~{       e# Loop n times starting from a value less than the first Abelian order
  {        e#   Find a number which doesn't satisfy the condition
    )_     e#     Increment and duplicate to test the condition on the copy
    mF     e#     Find prime factors with multiplicity
    _z~    e#     Duplicate and split into the primes and the multiplicities
    2f>    e#     Map the multiplicities to whether or not they're too high
    @::#   e#     Bring factors with multiplicities to top and expand to array of
           e#     maximal prime powers
    @m*::% e#     Cartesian product with the primes and map modulo, so for each
           e#     prime power p^k and prime q we have p^k % q.
    +      e#     Combine the "multiplicity too high" and the (p^k % q) values
    1&     e#     Check whether either contains a 1
  }g
}*

1
Grazie per la spiegazione molto approfondita e intrigante! :)
Fax

5

CJam, 46 45 byte

0{{)_mf_e`_:e>3a>\{~\,:)f#}%@fff%e_1e=|}g}ri*

Provalo qui.

Sto usando la condizione indicata nella pagina OEIS:

Lasciate che la fattorizzazione prima di nBE . Quindi è in questa sequenza se per tutti e non è uguale per tutti e e . --- TD Noe , 25 mar 2007p1e1...prernei < 3ipik1 (mod pj)ij1 ≤ k ≤ ei

Sono abbastanza sicuro che questo può essere giocato a golf, in particolare il controllo dell'ultima condizione.


3

Pyth, 37 byte

e.f!&tZ|f>hT2JrPZ8}1%M*eMJs.b*LYSNJ)Q

Suite di test

Utilizza la formula di OEIS, senza cubo e senza fattori di potenza primaria che sono 1 mod un fattore primo, diverso da 1.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.