Jestem wielkim fanem teorii liczb. Wielką rzeczą w teorii liczb jest arytmetyka modułowa; definicja jest wtedy i tylko wtedy, gdy m \ mid ab . Zabawne jest podnoszenie do potęg: szczególnie, gdy moduł jest liczbą pierwszą. W szczególności udowodniono, że jeśli a i m są względnie pierwsze (nie mają wspólnych czynników oprócz 1 ), to istnieje liczba e taka, że a ^ e \ equiv 1 \ mod m .
Wyjaśnię, na czym polega ćwiczenie. Weźmy moduł . Możliwe wyjście programu lub funkcji to:
3 2 6 4 5 1
2 4 1 2 4 1
6 1 6 1 6 1
4 2 1 4 2 1
5 4 6 2 3 1
1 1 1 1 1 1
Każdy rząd jest listą potęg pierwszego numeru w tym rzędzie: pierwszy rząd to , co odpowiada moduł . Drugi rząd kwadratu powyżej to potęgi itd., Aż do ostatniego rzędu, które są tylko potęgami .
To magiczny kwadrat modulo, ponieważ:
- Kwadrat jest symetryczny; to znaczy, ta kolumna jest taka sama jak ty wiersz.
- Wszystkie wartości od do pojawiają się co najmniej raz.
Poniżej znajduje się jedyna ważna moc wyjściowa dla , zaczynając od mocy :
5 4 6 2 3 1
4 2 1 4 2 1
6 1 6 1 6 1
2 4 1 2 4 1
3 2 6 4 5 1
1 1 1 1 1 1
Wyzwanie
Utwórz funkcję lub program, który podając liczbę pierwszą p
generuje magiczny kwadrat modulo, to znaczy kwadrat o długości boków p-1
, tak że każdy rząd jest listą kolejnych mocy pierwszego elementu w rzędzie i taki sam dla kolumn. Wszystkie liczby pomiędzy 0
i p
muszą wystąpić, a kwadrat może zawierać tylko liczby z tego zakresu.
Dane wejściowe to liczba lub ciąg znaków, a dane wyjściowe mogą być ascii, macierzą, tablicą tablic (dowolny rozsądny format).
To jest golf golfowy, więc wygrywa najkrótszy kod.