2013-03-11 17 views
5

Dzień dobry, jestem tu nowy i Przynoszę mały problem. Mam problem z opracowaniem wydajnego algorytmu dla następującego problemu: Muszę znaleźć kombinacje trzech liczb dodatnich x, yiz, aby x + y, x-y, y + z, y-z, x + z i x - z są idealnymi kwadratami. Problem polega na opracowaniu algorytmu, który znajdzie wszystkie kombinacje x, yiz od 1 i 2 000 000.Kombinacje trzech liczb dodatnich x, y, z tak, że x + y, x-y, y + z, y-z, x + z i x-z są idealnymi kwadratami

Obecnie używam for w ramach for, który z pewnością nie skończy się, zanim będę mieć moje wnuki.

+0

przyspieszenie nabycia wnuków, może być świetny sposób, aby rozwiązać ten problem;) +1 na dobre pytanie – kostja

+3

Jest ograniczenie, że '1

+1

W niektórych przypadkach może się okazać, że [każdy kwadrat jest sumą dwóch kolejnych liczb trójkątnych] (http://www.jstor.org/discover/10.2307/3621134?uid=3739728&uid=2&uid=4&uid=3739256&sid=21101806678781) (choć to oczywiście nie oznacza, że ​​tylko sumy trójkątne sumują się do kwadratów). –

Odpowiedz

4

Podstawową ideą na początku zmiany, takie jak:

u = x + y 
v = x - y 
w = y + z 

to x + y, X - Y, Y + Z, Y - x + z oraz x - z staje

u, v, w, u - v - w, v + w, u - w [all have to be squares] 

Następnie z innym substytucji, U = a², V = b², w = c² dostaniesz:

a², b², c², a² - b² - c², b² + c², a² - c² [all have to be squares] 

teraz można wyliczyć wszystkich a, b, cS, który może już być szybki e nough.

Dalszymi pomysłami może być wyliczenie wszystkich b², c², b² + c² przy użyciu Pythagorean triples (poprzez podstawienie go do m i n, wyliczenie wszystkich koprime (m, n), a następnie użycie formuły Euclid), a następnie znalezienie dla danego (b, c) podobnie jak w podobny sposób (np. zmień a² - c² = x² na a² = x ² + c ² i ponownie użyj trójek).

+0

Więc wpadłem na pomysł, aby rozpocząć szukanie ostatecznego X, a następnie Y, aby znaleźć wyrazy odpowiedzi X + Y to idealny kwadrat (niezależnie od tego, czy wynik jest w zakresie, czy jest inny od innych wyników), X - Y jest idealny kwadrat. Po "X" i "Y" szukających "Z" i innych wyrażeń zdajesz sobie sprawę, dopóki nie znajdziesz prawidłowej kombinacji i nie zapiszesz lub nie wydrukujesz. BeniBela "Podstawową ideą, aby rozpocząć zmiany, jak: u = x + y = x v - y w = Y + Z" wydaje się być dobrym pomysłem, postaram pracę z tym. Dziękuję Ci – user2156850

0

Rozszerzanie BeniBela's answer,

x + y = (x - z) + (y + z) 
x + y = (x + z) + (y - z) 

Więc trojaczki są ważne tylko, jeżeli przeciwprostokątna można przedstawić w dwóch różnych formach. Dalsze filtrowanie można wykonać, obserwując, że (x - z) i (x + z) również tworzą przeciwprostokątną triolę pitagorejską.

Powiązane problemy