Всем известен прямогольный треугольник со сторонами 3, 4 и 5, который называют египетским. Это очень удобный треугольник в строительстве: если вам нужно расположить два больших объекта под прямым, нужны только веревка и какая-нибудь единица длины. Например, чтобы залить фундамент для двух стен, между которыми должен быть прямой угол, нужно подготовить три веревки с длинами 3, 4 и 5 единиц длины и связать их в кольцо. Получится кольцо из веревки с двумя узлами, делящими веревку в соотношении 3:4:5. После этого одну из коротких частей веревки (3 или 4 единицы длины) натягивают вдоль стартовой стены от угла, а вторую короткую часть натягивают вдоль предполагаемой стены, сохраняя самый длинный участок в натянутом состоянии.
Это любопытный факт, что сумма квадратов целых чисел 3 и 4 равна квадрату целого числа 5. Является ли такой факт уникальным, или есть другие аналогичные прямоугольные треугольники с целыми сторонами? Чтобы быстро проверить, напишем небольшую программу на Си:
#include <iostream>
#include <iomanip>
int main () {
int max_rel_counter = 1000;
double relations[max_rel_counter];
int rel_counter=0;
int max_cathetus=100;
int cathetus1 = 0;
int cathetus2 = 0;
int hypotenuse = 0;
int hypotenuse_squared = 0;
for (cathetus1 = 1; cathetus1<=max_cathetus; cathetus1++) {
for (cathetus2 = cathetus1; cathetus2<=max_cathetus; cathetus2++) {
for (hypotenuse = cathetus2; hypotenuse<(cathetus1+cathetus2); hypotenuse++) {
if (
(cathetus1*cathetus1 + cathetus2*cathetus2)
== (hypotenuse*hypotenuse)
) {
bool found = false;
for (int i=0;i<rel_counter;i++) {
double new_rel = 1.0*cathetus2/cathetus1;
if (
((relations[i]-new_rel)<1.0e-9)
&&
((relations[i]-new_rel)>-1.0e-9)
)
{
found = true;
}
}
if (!found) {
if (rel_counter<max_rel_counter) {
relations[rel_counter] = 1.0*cathetus2/cathetus1;
rel_counter++;
std::cout << cathetus1 << "; " << cathetus2 << "; " << hypotenuse << "; (" << cathetus1*cathetus1 << " + " << cathetus2*cathetus2 << " = " << hypotenuse*hypotenuse << ")\n";
}
else {
std::cout << "Error: max_rel_counter achieved\n";
}
}
}
}
}
}
std::cout << "rel_counter = " << rel_counter << "\n";
return 0;
}
Эта программа ищет все уникальные комбинации целых катетов размером меньше 100, из которых составляется прямоугольный треугольник с целой гипотенузой. При этом не берутся во внимание треугольники с одинаковым отношением между катетами. Например, если найден треугольник со сторонами 3, 4 и 5, то треугольник с пропорциональными сторонами 6, 8, 10 игнорируется. Ниже приведен список, выдаваемый программой:
3; 4; 5; (9 + 16 = 25)
5; 12; 13; (25 + 144 = 169)
7; 24; 25; (49 + 576 = 625)
8; 15; 17; (64 + 225 = 289)
9; 40; 41; (81 + 1600 = 1681)
11; 60; 61; (121 + 3600 = 3721)
12; 35; 37; (144 + 1225 = 1369)
13; 84; 85; (169 + 7056 = 7225)
16; 63; 65; (256 + 3969 = 4225)
20; 21; 29; (400 + 441 = 841)
20; 99; 101; (400 + 9801 = 10201)
28; 45; 53; (784 + 2025 = 2809)
33; 56; 65; (1089 + 3136 = 4225)
36; 77; 85; (1296 + 5929 = 7225)
39; 80; 89; (1521 + 6400 = 7921)
48; 55; 73; (2304 + 3025 = 5329)
60; 91; 109; (3600 + 8281 = 11881)
65; 72; 97; (4225 + 5184 = 9409)
rel_counter = 18
Видно, что существует много разных треугольников с целыми катетами и гипотенузой, с катетом не больше 100 нашлось 18 штук. Если продолжить поиски, то обнаружится, что есть 18 уникальной соотношений с размерами катетов не больше 100, 179 соотношений с размерами катетов не больше 1000 и 1788 соотношения с размерами катетов не больше 10000. Вот так много существует прямоугольных треугольников с целыми катетами, кроме изветсного египетского:).
Если вас интересуют разнообразные задачи и обсуждения по физике и математике, подписывайтесь. И начинайте обсуждение в комментариях, если интересно!