Klocki lego, trójkąty pitagorejskie, liczby pierwsze, liczby zespolone
Wstęp
Uwaga - ze względu na użycie MathML tą stronę należy otworzyć Firefox'em!
Pewnego razu mój synek zażyczył sobie abym pomógł mu zbudować „okrągłą” wieżę z klocków lego. Zadanie nieco karkołomne, ale udało mi się mu wytłumaczyć,
że taka wieża będzie nieco kanciasta. Aby ułatwić sobie zadanie wymyśliłem że wybiorę promień wieży tak aby przynajmniej kilka klocków wypadło dokładnie
na okręgu, taką średnicą może być np.: 5, 10, 13.
Na przeciwprostokątnych o takich długościach można zbudować tylko jeden trójkąt pitagorejski, a ja chciałem, żeby było ich więcej.
Wymyśliłem sobie, że jeżeli wezmę dwie przeciwprostokątne, na których można zbudować dwa różne trójkąty i je wymnożę,
to na takiej przeciwprostokątnej będę mógł zbudować dwa trójkąty pitagorejskie, bo przecież jeżeli wymnożę wszystkie boki trójkąta pitagorejskiego
przez liczbę całkowitą to otrzymam trójkąt pitagorejski. Poszukałem więc dwu trójkątów o najkrótszych przeciwprostokątnych
(a=3, b=4, c=5 i a=5, b=12, c=13) no i zrobił się problem bo 5*13 = 65. A to jest całkiem spora długość jak na budowlę z klocków lego.
Postanowiłem więc napisać program, który znajdzie przeciwprostokątną o mniejszej długości, ale taką na której da się zbudować dwa różne trójkąty prostokątne.
Po przetestowaniu go na trójkątach o przeciwprostokątnych 5, 10 i 13 kazałem mu znaleźć trójkąty o przeciwprostokątnej 65.
I owszem program znalazł trójkąty: 25;60;65; i 39;52;65; co tylko potwierdziło poprawność działania programu no i moich przemyśleń,
ale też znalazł trójkąty: 16;63;65; i 33;56;65; co mnie całkowicie zaskoczyło.
Więc szybko chwyciłem za kalkulator i faktycznie: to też są trójkąty pitagorejskie.
Więc postanowiłem temat zbadać nieco głębiej i podzielić się wynikami.
Pierwsze wnioski i hipotezy
Skoro już miałem program do wyszukiwania trójkątów pitagorejskich to czemu go nie zmusić przeszukania jakiegoś większego zakresu liczb.
Na początek kazałem mu znaleźć wszystkie trójkąty o przeciwprostokątnej do 1 000 000 (jednego miliona). Zajęło to komputerowi około 30 min.
Ale aby dalsze moje dywagacje nie były zbyt obszerne zdefiniuję kilka pojęć:
Trójkąt pitagorejski – trójkąt prostokątny którego długości boków dadzą się wyrazić liczbami całkowitymi.
W wikipedii można znaleźć definicję "Trójek pitagorejskich".
Tamta definicja jest w pełni równoważna podanej przeze mnie, tylko że tamta jest bardziej nakierowana na teorię liczb, przez co traci się istotę problemu.
No bo gdy ktoś kto przeczyta, że trójka pitagorejska to taka trójka liczb całkowitych, że a2+b2=c2
to dlaczego nie np.: a3+b2=c2
albo a2+b2=c3 albo jeszcze coś innego.
Wstawiając w tej definicji uporządkowanie przyprostokątnych wycinam trójkąty, które są symetryczne względem spełniających tą definicje.
Rysunek obok ilustruje dlaczgo nie warto zajmować się wszystkimi możliwymi trójkątami o proporcjach a:b:c.
Jak widać na rysunku, pozostałe trójkąty można bardzo łatwo narysować wykorzystując symetrie.
Oprócz tych hipotez zastanawiałem się czy mając pary pitagorejskie skojarzone z dwiema
PLP (pitagorejskimi liczbami pierwszymi) można wyliczyć te
dwie dodatkowe pary.
Problem początkowo wydawał się dosyć trudny, bo szkoły pokończyłem już jakiś czas temu,
ale rozmyślając o tym problemie uświadomiłem sobie, że już znam takie mnożenie:
jest to iloczyn liczb zespolonych.
No bo moduł z iloczynu dwu liczb zespolonych jest równy iloczynowi modułów składników.
No dobrze tylko jak się mają te liczby zespolone do trójkąta pitagorejskiego?
Który bok reprezentuje część rzeczywistą, a który urojoną?
Wyobraźmy sobie, że mamy trójkąt pitagorejski o bokach a1, b1, c1.
Z pary przyprostokątnych takiego trójkąta możemy zbudować 8 liczb zespolonych (uwzględniając znaki plus i minus),
ale długości boków są dodatnie więc będą tylko dwie liczby:
Druga para też może dać dwie liczb czyli wszystkich możliwych iloczynów jest 4. Ale nie musiałem się tym przejmować, w końcu w wyniku mnożenia mam uzyskać parę pitagorejską, a na nią nałożyłem pewne ograniczenia: liczby muszą być dodatnie i uporządkowane rosnąco. Więc:
oraz
Do wyliczania pierwszej pary przyjąłem że obie liczby są postaci a+ib, a do wyliczania drugiej pary: pierwsza jest postaci b+ia, a druga a+ib. Można zrobić odwrotnie, ale wyniki będą identyczne.
Jeżeli dołożyć do tych czterech wzorów, wzory na wynikające z oczywistej oczywistości, że jeżeli każdy bok trójkąta pitagorejskiego zostanie pomnożony przez tę samą liczbę całkowitą to otrzymany trójkąt też jest trójkątem pitagorejskim, to:
Te osiem równań definiują iloczyn pitagorejski dwu PLP
Proszę zauważyć, że iloczyn pitagorejski zwraca nie jedną parę liczb, jak to jest w przypadku iloczynu liczb zespolonych, a listę par.
W przypadku dwu różnych PLP jest to lista czteroelementowa, w przypadku kwadratu dwuelementowa.
Przykłady:
Iloczyny pierwszych czterech PLP:
5:(3;4); 13:(5;12); 17:(8;15); 29:(20;21)
Iloczyny dwu PLP:
Aby sprawdzić czy moje podejrzenia są poprawne postanowiłem napisać program, który będzie robił weryfikację krzyżową:
Brał kolejne liczby całkowite od 5 w górę;
Rozkładał daną liczbę na czynniki pierwsze;
Na podstawie rozkładu wyliczał pary pitagorejskie stosując zasady iloczynu pitagorejskiego;
Stosując metodę „Brute Force” wyszukiwał pary pitagorejskich związanych z daną liczbą.
Porównywał wyniki iloczynu z wynikami wyszukiwania - w poszukiwaniu odstępstw.
Gdy zapuściłem program do skanowania poszczególnych liczb okazało się, że każdy trójkąt pitagorejski albo jest oparty o liczbę pierwszą
(czyli długość jego przeciwprostokątnej jest liczbą pierwszą) albo da się przedstawić jako iloczyn
liczb pierwszych pitagorejskich
i ewentualnie liczb pierwszych nie pitagorejski, ale w rozkładzie na liczby pierwsze zawsze musi być przynajmniej jedna
pitagorejska liczba pierwsza.
Sprawdziłem to na liczbach do 20milionów. Mógłbym badać to na większych liczbach, ale ilość obliczeń rosła proporcjonalnie do wartości badanej liczby,
czas badania się wydłużał, a odstępstw nie było. Więc wymyśliłem sobie, że gdybym znalazł jakąś liczbę pierwszą,
którą dałoby się przedstawić w postaci sumy kwadratów dwu liczb całkowitych, traktując te dwie liczby jako liczbę zespoloną,
podnosząc ją do kwadratu znalazłbym trójkąt pitagorejski, który mógłby złamać wspomniane wcześniej zasady.
I znalazłem mnóstwo takich liczb, np.:
Aby to dokładniej sprawdzić, nakazałem komputerowi aby przy okazji wyszukiwania PLP sprawdzał też czy dana
PLP da się przedstawić w postaci sumy kwadratów
dwu liczb całkowitych. Okazało się, że każda sprawdzana PLP da się przedstawić przy pomocy takiej sumy.
Na podstawie powyższych testów pozwoliłem sobie sformułować następującą hipotezę:
Jeśli powyższa hipoteza byłaby prawdziwa to każda PLP musi być liczbą postaci 4*C +1, gdzie C to liczba całkowita > 0.
Można tego łatwo dowieść:
Prawie każda liczba pierwsza jest liczbą nieparzystą (jest jeden wyjątek) więc musi być sumą liczby parzystej k i nieparzystej l.
Więc:
k = 2m;
l = 2n+1;
gdzie m – to liczba całkowita >0, a n też całkowita >= 0;
Czyli nasza:
PLP = (2m)2+(2n+1)2;
PLP = 4m2 + 4n2+2*2n +1;
PLP = 4(m2+n2+n)+1;
Skoro m i n to liczby całkowite więc m2+n2+n = C– też musi być całkowite. Więc PLP = 4*C+1 – c.n.d.
Stąd kolejna hipoteza:
Każda liczba pierwsza postaci 4*C+1 gdzie C jest liczbą całkowitą większą od zera jest PLP.
Powyższe dwie hipotezy okazały się Twierdzeniem Fermata- Girarda o sumie dwóch kwadratów.
Oczywiście każdy może zabytać: jak mając te dwie liczby, których suma kwadratów daje PLP da się wyliczyć
parę pitagorejską powiązaną z daną PLP.
I znów rozwiązanie problemu okazały się liczby zespolone. Okazuje się, że para pitagorejska jest kwadratem liczby zespolonej
zbudowanej z tych dwu liczb.
Dlatego też dwie liczby nazwałem pierwiastkiem pary pitagorejskiej w skrócie PPP.
Pierwiastek Pary pitagorejskiej (PPP)
– uporządkowana rosnąco para liczb naturalnych, która podniesiona do kwadratu w sensie iloczynu pitagorejskiego da parę pitagorejską.
Jak z takiego pierwiastak wyliczyć boki trójkąta pitagorejskiego można zapoznać przeglądając artykuł o Trójkach pitagorejskich.
Ja tylko podam gotowe wzory:
a = abs(m2-n2);
b = 2mn;
c = m2 + n2;
Chciałby tutaj dodać jeszcze taką uwagę, że faktycznie przy pomocy powyższych wzorów nie da się wyliczyć wszystkich trójkątów pitagorejskich np:
(9, 12, 15) (PLP=3*5)
(35, 21, 28) (PL=7*5)
(56, 105, 119) (PLP=7*17)
Ciekawostką może wydawać fakt, że spośród czterech trójkątów powstałych w wyniku iloczynu pitagorejskiego dwu różnych PLP
dwa dadzą się wyliczyć podanymi wzorami, a dwa nie, np PLP = 65 (5*13):
(16, 63, 65) - dla m=1; n=8
(25, 60, 65) - ten się nie da
(33, 56, 65) - dla m=4; n=7;
(39, 52, 65) - ten się nie da
Wynika to z dwu faktów:
Trójkąt ma trzy stopnie swobody, przy czym ponieważ jest to trójkąt prostokątny to jeden stopień jest taki "beznogi";
Już chciałem zacząć przekonywać komputer aby sprawdził za mnie powyższe spostrzeżenie, gdy sobie uświadomiłem, że co druga liczba nieparzysta jest postaci 4*C+1 np.:
3 = 2*1+1
5 = 2*2+1 = 4*1 +1
7 = 3*2+1
9 = 2*4+1 = 4*2 +1
11=2*5+1
13=2*6+1 = 4*3+1
A jak już wcześniej wspomniałem prawie wszystkie liczby pierwsze są nieparzyste, a liczby bliźniacze to dwie kolejne liczby nieparzyste,
z tego prosty wniosek, że jedna z nich musi być typu 4C+1, a więc i PLP.
Napisałem tu, że "przynajniej jedna" dlatego, że gdy pomnoży się wszystkie boki trójkąta przez 3 lub wielkrotność 3
to obie liczby z pary pitagorejskiej będą podzielne przez 3.
Udowodnienie powyższej tezy nie jest jakoś specjalnie trudne aczkolwiek wymaga trochę wysiłku,
skorzystam tutaj z formuł na wyliczenie boków trójkąta pitagorejskiego:
Z powyższych formuła istotne są tylko te na wyliczenie boków a i b oraz bez "abs":
Teraz aby udowodnić zakładaną tezę powiążę wartość liczb m i n z podzielnością przez 3.
gdzie liczby k i l to liczby całkowite większe lub równe 0, a rm i rn to reszta z dzielenia przez 3
czyli rm i rn mogą przybierać wartości 0 lub 1 lub 2.
Dla udowodnienia naszej tezy istotne są tylko te reszty.
Mamy tutaj tylko trzy istotne przypadki:
Jedna z tych reszt (rm lub rn) lub obie są równe 0 wtedy:
b = 2(3k+rm)*( 3l+rn)
Załóżmy, że rm=0 wtedy b = 2(3k+0)*( 3l+rn), czyli b=2*3*k*( 3l+rn).
Jak widać b musi być podzielne przez 3, podobne rozumowanie można przeprowadzić
dla rn =0 lub obu naraz.
Obie reszty są sobie równe: rm i rn =r wtedy:
a = m2 - n2 =(3k+r)2-(3l+r)2
pomijając nawiasy otrzymujemy: a=9*k2 + 6kr + r2 - 9*l2 - 6lr - r2 - jak widać r2 się redukuje, a 3 można wyłączyć przed nawias: a=3*(3*k2+2kr-3*l2-2*lr) - więc a musi być podzielne przez 3
Obie reszty są większe od zera i na dodatek są różne od siebie rm ≠ rn.
Prawdę powiedziawszy mamy tu tylko dwa przypadki, a w zasadzie jeden bo oba są sobie równoważne: rm = 1, rn = 2 lub rm = 2, rn = 1
Przyjmijmy, że: rm = 1, rn = 2, podstawiając do formuły na a otrzymujemy: a=9*k2+6kr+1-9*l2-6lr-4
Po uporządkowaniu równania otrzymujemy: a=9*k2+6kr-9*l2-6lr-3 - widać, że 3 można wyłączyć przed nawias: a=3*(3*k2+2kr-3*l2-2lr-1) –czyli a jest podzielne przez 3
I w ten sposób wykazałem, że w każdym przypadku przynajmniej jedna liczba z pary pitagorejskiej jest podzielna przez 3.
Znalazłem dowód tego twierdzenia.,
jest po polsku, tylko że niestety
jest to tłumaczenie automatyczne i ciężko je zrozumieć. Ale to było kiedyś teraz znacząco się poprawiło.
Ale najpierw je przytoczę za wikipedią:
Każda liczba pierwsza dająca resztę 1 w dzieleniu przez 4 jest sumą kwadratów dwóch liczb całkowitych.
Lekko podstroje to twierdzenie aby uwypuklić coś ciekawego:
Każda liczba pierwsza dająca resztę 1 w dzieleniu przez 4 jest sumą kwadratów PARY (dwóch) liczb całkowitych. Ta para jest zawsze dokłanie jedna.
I to, że ta para jest zawsze dokładnie jedna wydaje mi się bardzo ciekawe, bo jeżeli weźmiemy liczby złożone będące iloczynem dwu lub więcej różnych
liczb pierwszych i będące postaci 4C+1 to:
- nie dadzą się wyrazić sumą kwadratów dwu liczb np.
3 * 7= 4 * 5+1=21
3 * 11= 4 * 8+1=33
7 * 11= 4 *19+1=77
11 * 19= 4 *52+1=209
- dadzą się przedstawić więcej niż jedną sumą;
Prawdę powiedziawszy, jeśli chodzi o liczby typu 4C+1 to są dwie kategorie liczb, które da się przedstawić w jeden jedyny sposób:
liczby pierwsze (PLP) oraz ich kwadraty.
Magia liczby 2
Liczba 2 to dosyć dziwna liczba bo:
jest to pierwsza liczba pierwsza;
jest to jedyna parzysta liczba pierwsza;
Każdy pamięta ze szkoły, że 1+1=2, dla każdego oczywistą oczywistością będzie stwierdzenie, że 12+12=2.
I w zasadzie można by uznać, że się mądrze gdyby nie fakt, że mod(1+i1)=2, a to jest właśnie 12+12=2, i ma to swoje konsekwencje,
bo się okazuje, że liczby PLP pomnożone przez 2 (żadna inna nie PLP na to nie pozwala) dają się przedstawić w postaci sumy kwadratów dwu liczb
całkowitych (czyli PPP - pierwiastek pary pitagorejskiej), np:
Wyliczenie tego pierwiastka pary pitagorejskiej
na podstawie PPP związanego z daną PLP jest dosyć proste jeśli się zauważy,
że jest to iloczyn: (a+ib)(1+i)
czyli:
an=abs(a-b);
bn=a+b;
Jak widać nawet tak banalna formuła: 12+12=2 ma swoje dosyć nieoczekiwane konsekwencje.
Czy 2n może być liczbą pitagorejską?
Aby odpowiedzieć na postawione powyżej pytanie należy zdać sobie sprawę, że dla każdego naturalnego "n" liczba 2n jest liczbą podzielną przez 2.
Jeśli n będzie dużą liczbą albo przynajmniej większą od 3 to także 2n-1, 22n, 22n-1, 22n-2 będą liczbami podzielnymi przez 2.
Aby sprawdzić czy jest możliwe aby 2n było liczbą pitagorejską zakładam, że mam takie dwie liczby a i b że:
a2+b2=(2n)2
Pomijając nawias otrzymuję:
a2+b2=22n
Aby suma była podzielna przez dwa to oba jej składniki powinny być parzyste lub nieparzyste. Na początek przyjmijmy, że a i b są nieparzyste:
a=2k+1
b=2l+1
Gdzie k i l to liczby całkowite większe od 0.
Podstawiając do wzoru na 22n:
22n=(2k+1)2+(2l+1)2
Pomijając nawiasy:
22n=4k2+4k+1+4l2+4l+1
Po uporządkowaniu:
22n=4k2+4l2+4k+4l+2
Wyłączam 2 przed nawias:
22n=2(2k2+2l2+2k+2l+1)
Obie strony dzielę przez 2:
22n-1=2k2+2l2+2k+2l+1
Jak wspomniałem na początku tego akapitu 22n-1 jest liczbą parzystą czyli liczbą podzielną przez 2,
natomiast 2k2+2l2+2k+2l+1 w sposób ewidentny w dzieleniu przez 2 da resztę, z tego wniosek: a i b nie mogą być liczbami nieparzystymi.
Skoro a i b nie mogą być nieparzyste, to może dla parzystych będzie lepiej:
a=2k
b=2l
Podstawiając do wzoru na 22n:
22n=(2k)2+(2l)2
Pomijając nawiasy:
22n=4k2+4l2
Jak widać obie strony dzielą się przez 4, więc:
2(2n-2)=k2+l2
Na podstawie wcześniejszych rozważań o nieparzystych a i b wiemy, że k i l musi być parzyte, czyli podzielne przez 2.
Więc podstawiając pod a i b znów otrzymamy wyrażenie podzielne przez 4 i tak dalej, aż dojdziemy do niskich potęg dwójki
(21, 22, 23, 24), o których wiemy,
że nie są liczbami pitagorejskimi.
Z tego wniosek:
Dla dowolnie dużego "n" należącego do liczb naturalnych, liczba 2n nie jest liczbą pitagorejską.