اعداد فیثاغورسی

کوچک‌ترین و ساده‌ترین اعداد فیثاغورسی یعنی (3,4,5) که مجموعه مربعات دوتای کوچکتر با مربع بزرگتر برابر است و تشکیل اضلاع مثلث قائم‌الزاویه را می‌دهند.
اعداد فیثاغورسی یا سه‌تایی فیثاغورسی شامل سه عدد طبیعی به صورت (a,b،c) هستند که مجموع مربع‌های دو تا از آن‌ها برابر با مربع سومی باشد، به بیان دیگر اعداد a و b و c که طبیعی‌اند را فیثاغورسی گویند هرگاه a ۲ + b ۲ = c ۲ باشد یا به عبارت ریاضی: { ؛ اعداد فیثاغورسی ضلع‌های یک مثلث قائم‌الزاویه را تشکیل می‌دهند. با توجه به رابطه هر گروه اعداد فیثاغورسی (مثلا a , b , c) با اعداد فیثاغورسی دیگر می‌توان آن‌ها را به دو گروه تقسیم نمود:
اعداد فیثاغورسی اول
ابتدا قبل از شرح دسته‌بندی توجه داشته باشید که یک سه‌تایی فیثاغورسی که سه عدد آن هیچ مقسوم‌علیه مشترک (به جز ۱) نداشته باشند را سه‌تایی فیثاغورسی اول می‌نامیم. مانند (3,4،5) که بر هیچ عدد مشترکی بخش‌پذیر نیستند سه‌تایی فیثاغورسی اول‌اند. اما سه‌تایی (6,8،10)، اعداد آن فیثاغورسی هستند ولی اول نیستند چراکه هر سه بر ۲ بخش‌پذیرند.
اعداد فیثاغورسی متشابه
شما با داشتن یک سه‌تایی فیثاغورسی اول مانند a,b،c و با ضرب آن در یک عدد طبیعی k و دلخواه، یک سه‌تایی فیثاغورسی ka,kb,kc دیگر خواهید داشت وبه همین ترتیب سه‌تایی‌های فیثاغورسی دیگر، که همگی با هم متشابه و متشابه اعداد فیثاغورسی اولی خواهند بود و در حقیقت مثلث حاصل از آن‌ها نیز متشابه‌اند.
به عنوان نمونه اعداد فیثاغورسی (6,8،10) , (9,12,15) , (12,16,20) , .. همگی متشابه بوده و مضاربی از اعداد فیثاغورسی اول (3,4،5) می‌باشند.
نکته: در یک گروه اعداد فیثاغورسی متشابه تنها و حتما تنها یک سه‌تایی فیثاغورسی اول وجود دارد.
اعداد فیثاغورسی غیر متشابه
سه‌تایی‌های فیثاغورسی‌ای که مضاربی از دو سه‌تایی فیثاغورسی اول متفاوت باشند، یا هر دو خود، سه‌تایی‌های فیثاغورسی اول متفاوت باشند را سه‌تایی‌های فیثاغورسی غیر متشابه گویند.
به عنوان نمونه دو سه‌تایی فیثاغورسی (3,4،5) و (5,12,13)، غیر متشابه‌اند چراکه خود دو سه‌تایی فیثاغورسی اول هستند. و البته مثلث‌های حاصل از دو سه‌تایی فیثاغورسی غیر متشابه نیز باهم متشابه نیستند.
استفاده در طول تاریخ
در مصر باستان ابزاری که برای شناختن زاویه‌های ۹۰ درجه استفاده می‌شد، طنابی با ۱۲ گره مساوی بود که می‌توانست مثلثی با طول اضلاع ۳ و ۴ و ۵ بسازد و در نتیجه یکی از زوایا ۹۰ درجه می‌بود.
فهرست اعداد
در زیر فهرستی از اعداد فیثاغورسی کوچکتر از ۱۰۰ نوشته شده‌است:
(۳ ، ۴ ، ۵)،(۶ ، ۸ ، ۱۰)، (۵، ۱۲، ۱۳)، (۷، ۲۴، ۲۵)، (۸، ۱۵، ۱۷)، (۹، ۴۰، ۴۱)، (۱۱، ۶۰، ۶۱)، (۱۲، ۳۵، ۳۷)، (۱۳، ۸۴، ۸۵)، (۱۶، ۶۳، ۶۵)، (۲۰، ۲۱، ۲۹)، (۲۸، ۴۵، ۵۳)، (۳۳، ۵۶، ۶۵)، (۳۶، ۷۷، ۸۵)، (۳۹، ۸۰، ۸۹)، (۴۸، ۵۵، ۷۳)، (۶۵، ۷۲، ۹۷)، (۱۶۹،۱۲۰،۱۱۹)
روش به دست آوردن
محاسبه ذهنی
به دست آوردن نمونه‌ای از اعداد فیثاغورسی کوچک به صورت ذهنی می‌تواند بسیار آسان باشد؛ به‌گونه‌ای که تمام مضارب اعداد 3،4،5 جزء اعداد فیثاغورسی‌اند. به عنوان نمونه که 10و8و6 هستند. این موضوع با تمام مضارب دیگر نیز برقرار خواهد بود.
در برنامه‌نویسی رایانه‌ای
خروجی برنامه یافتن اعداد فیثاغورثی با S=10000000000
برای به دست آوردن اعداد فیثاغورسی می‌توان از کدی شبیه به کد زیر استفاده کرد:
for(int i=1;i<max;i++)
for(int j=i;j<max;j++)
for(int k=j;k<max;k++)
if(((i*i) + (j*j)) == (k*k) )
cout<<i*i<<" + "<<j*j<<" = "<<k*k;
که البته کدی بهینه نشده‌است و در صورتی که محدودیت max عددی بزرگ باشد بسیار کند خواهد بود.
در صورت استفاده از کدهای بهینه شده، نتیجه برنامه بسیار سریع‌تر خواهد بود و برای محدودیت کوچکتر از ۱۰ ۱۰ در کسری از ثانیه به جواب خواهد رسید. محدودیت‌های دیگری که برای این کد می‌توان در نظر گرفت این است که مجموع اعدادی که به توان می‌رسند برابر با محدودیت کلی باشد. برای مثال تنها سه عدد فیثاغورثی ۲۰۰، ۳۷۵ و ۴۲۵ وجود دارند که مجموع آنها دقیقا ۱۰۰۰ است.
نمونه‌ای از کد به زبان سی‌پلاس‌پلاس که به صورت بهینه ( و نه کاملا بهینه) با استفاده از بزرگ‌ترین مقسوم‌علیه مشترک چنین اعدادی را می‌یابد:
// تابع findPythTriplet
vector findPythTriplet(long long int until)
long long int s=until,s2=s/2,m,sm,k,d,n,a,b,c;
long long int mLimit=(long long int)sqrt((double)s2);
vector results;
for(m=2;m<=mLimit;m++)
if(s2%m==0)
sm=s2/m;
while(sm%2==0)
sm = sm/2;
if(m%2==1)
k=m+2;
else
k=m+1;
while (k<(2*m) -- k<=sm)
if(sm%k0 -- gcd(k,m)1)
d=s2/(k*m);
n=k-m;
a=d*(m*m-n*n);
b=2*d*m*n;
c=d*(m*m+n*n);
results.push_back(a);
results.push_back(b);
results.push_back(c);
k+=2;
return results;
قضیه فیثاغورس
قضیه آخر فرما