سهتایی فیثاغورثی

یک سه تایی فیثاغورثی شامل سه عدد صحیح مثبت و است چنانکه . چنین سه تایی را اغلب به صورت مینویسند. مثال معروفی از آن است. اگر یک سه تایی فیثاغورثی باشد، آنگاه نیز برای هر عدد صحیح مثبت مجدداً یک سه تایی فیثاغورسی است. یک سه تایی فیثاغورثی اولیه سه تایی است که در آن و متباین باشند (یعنی، هیچ مقسوم علیه مشترکی بزرگتر از ۱ نداشته باشند).[۱] مثلثی که اضلاع آن تشکیل سه تایی فیثاغورسی دهند را مثلث فیثاغورسی نامند که لزوماً قائم الزاویه خواهد بود.
این نام (سه تایی فیثاغورسی) نشأت گرفته از قضیه فیثاغورس است که بیان میدارد، طول اضلاع هر مثلث قائم الزاویه ای در فرمول صدق میکند؛ لذا، سه تاییهای فیثاغورسی توصیف گر سه ضلع صحیح یک مثلث قائم الزاویه میباشد. با این حال، مثلثهای قائم الزاویه ای که اضلاع صحیح ندارند تشکیل سه تایی فیثاغورثی نمیدهند. به عنوان مثال، مثلثی که اضلاعش به صورت و است یک مثلث قائم الزاویه است، اما تشکیل یک سه تایی فیثاغورثی نمیدهد چرا که عدد صحیح نیست.
سه تاییهای فیثاغورسی از زمانهای باستان شناخته شده بودند. قدیمیترین سند ثبت شده آن مربوط به پلیمپتون ۳۲۲ است، که یک لوح بابلی از زمان ۱۸۰۰ قبل از میلاد است که در دستگاه اعداد شصت تایی نوشته شده است. این لوح توسط ادگار جیمز بنکس، کمی بعد از ۱۹۰۰ میلادی کشف شد و به جورج آرتور پلیمپتون در ۱۹۲۲ به قیمت ۱۰ دلار فروخته شده.[۲]
زمانی که به دنبال جوابهای صحیح معادله هستیم، به معادله اخیر معادله سیالهای میگوییم؛ لذا سه تاییهای فیثاغورثی یکی از قدیمیترین حلهای غیر خطی معادلات سیالهای (یا معادلات دیوفانتاین، یا معادله دیوفانتینی) هستند.
فهرست اعداد
۱۶ سه تایی فیثاغورثی اولیه (یعنی سه تاییهایی که نسبت به هم متباین باشند) کوچکتر از ۱۰۰ وجود دارند:
| (۳, ۴, ۵) | (۶ ,۸ , ۱۰) | (۵, ۱۲, ۱۳) | (۸, ۱۵, ۱۷) | (۷, ۲۴, ۲۵) |
| (۲۰, ۲۱, ۲۹) | (۱۲, ۳۵, ۳۷) | (۹, ۴۰, ۴۱) | (۲۸, ۴۵, ۵۳) | |
| (۱۱, ۶۰, ۶۱) | (۱۲ ,۱۶ , ۲۰) | (۱۶, ۶۳, ۶۵) | (۳۳, ۵۶, ۶۵) | (۴۸, ۵۵, ۷۳) |
| (۱۳, ۸۴, ۸۵) | (۳۶, ۷۷, ۸۵) | (۳۹, ۸۰, ۸۹) | (۶۵, ۷۲, ۹۷) |
روش به دست آوردن
محاسبه ذهنی
به دست آوردن نمونهای از اعداد فیثاغورسیِ کوچک به صورت ذهنی میتواند بسیار آسان باشد؛ بهگونهای که تمام مضارب اعداد ۳٬۴٬۵ جزء اعداد فیثاغورسیاند. به عنوان نمونه که ۱۰و۸و۶ هستند. این موضوع با تمام مضارب دیگر نیز برقرار خواهد بود.
میتوان از تساویهای جبری نیز برای بهدست آوردن اعداد فیثاغورس استفاده کرد. برای مثال برای n که عددی طبیعی و بزرگتر از یک است داریم تمام اعداد به شکل اعداد فیثاغورسیاند. (از این فرمول میتوان نتیجه گرفت تمام اعداد فرد بزرگتر از یک میتوانند در سه تایی فیثاغورسی شرکت کنند و کوچکترین عضو باشند)
همچنین اگر x و y دو عدد نسبت به هم اول باشند و x بزرگتر از y باشد اعداد نیز اعداد فیثاغورسیاند.
در برنامهنویسی رایانهای

الگو:- برای به دست آوردن اعداد فیثاغورسی میتوان از کدی شبیه به کد زیر استفاده کرد:
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<long long int> 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<long long int> 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%k== 0 && 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;
}