Perintah Abelian

17

Beberapa latar belakang

Dalam matematika, suatu kelompok adalah tuple ( G , •) di mana G adalah satu set dan • merupakan operasi pada G sehingga untuk setiap dua elemen x dan y di G , xy juga di G .

Untuk beberapa x , y , z dalam G , aksioma grup dasar adalah sebagai berikut:

  • G adalah ditutup di bawah •, yaitu xy di G
  • Operasi • adalah asosiatif , yaitu x • ( yz ) = ( xy ) • z
  • G memiliki elemen identitas , yaitu ada e di G sehingga xe = x untuk semua x
  • Operasi • adalah invertable , yaitu terdapat sebuah , b di G sehingga sebuahx = y dan yb = x

Oke, jadi itu adalah kelompok. Sekarang kita mendefinisikan kelompok Abelian sebagai suatu kelompok ( G , •) sedemikian rupa sehingga • merupakan operasi komutatif . Yaitu, xy = yx .

Definisi terakhir. The rangka dari kelompok ( G , •), dilambangkan | G |, adalah jumlah elemen dalam himpunan G .

Tugas

Perintah Abelian adalah bilangan bulat n sehingga setiap kelompok pesanan n adalah Abelian. Urutan pesanan Abelian adalah A051532 di OEIS. Tugas Anda adalah menghasilkan suku ke- n dari urutan ini (1-diindeks) diberi bilangan bulat n . Anda harus mendukung input hingga bilangan bulat terbesar sehingga tidak ada yang akan meluap.

Input dapat berasal dari argumen fungsi, argumen baris perintah, STDIN, atau apa pun yang nyaman.

Output dapat dikembalikan dari fungsi, dicetak ke STDOUT, atau apa pun yang nyaman. Tidak ada yang ditulis untuk STDERR.

Skor adalah jumlah byte, kemenangan terpendek.

Contohnya

Berikut adalah 25 syarat pertama dari urutan ini:

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
Mesin fax
sumber
1
Terkait
Martin Ender

Jawaban:

6

CJam ( 35 32 byte)

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

Demo online

Pembedahan

Untuk mengulangi beberapa informasi dalam OEIS, perintah Abelian adalah perintah nilpoten bebas kubus ; dan pesanan nilpoten adalah angka-angka nyang tidak ada pembagi daya utama p^k | nyang kongruen untuk 1modulo pembagi utama lainnya.

Jika kami lulus tes bebas-kubus, tes nilpotensi berkurang menjadi

  • Tidak ada faktor prima yang sama dengan 1modulo faktor prima lainnya
  • Jika multiplisitas prima padalah k, p^ktidak boleh sama dengan 1modulo faktor prima lainnya.

Tapi kemudian kondisi kedua berarti yang pertama, jadi kita bisa menguranginya menjadi

  • Jika multiplisitas prima padalah k, p^ktidak boleh sama dengan 1modulo faktor prima lainnya.

Perhatikan bahwa kata "lain" tidak perlu, karena p^a == 0 (mod p)untuk 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
}*
Peter Taylor
sumber
1
Terima kasih atas penjelasannya yang sangat menyeluruh dan menarik! :)
Fax Machine
5

CJam, 46 45 byte

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

Uji di sini.

Saya menggunakan kondisi yang diberikan pada halaman OEIS:

Biarkan faktorisasi prima nmenjadi . Maka dalam urutan ini jika untuk semua dan tidak sama untuk semua dan dan . --- TD Noe , 25 Mar 2007p1e1...prernei < 3ipik1 (mod pj)ij1 ≤ k ≤ ei

Saya cukup yakin ini bisa golf, terutama pemeriksaan kondisi terakhir.

Martin Ender
sumber
3

Pyth, 37 byte

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

Suite uji

Menggunakan rumus dari OEIS, cubefree dan tidak ada faktor daya utama yang 1 mod faktor prima, selain 1.

isaacg
sumber