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

اعداد فیثاغورسی یا سه‌تایی فیثن
شامل سه عدد طبیعی به صورت (a,b،c) هستند که مجموع مربع‌های دو تا از آن‌ها برابر با مربع سومی باشد، به بیان دیگر اعداد a و b و c که طبیعی‌اند را فیثاغورسی گویند هرگاه a۲ + b۲ = c۲ باشد یا به عبارت ریاضی: {} ؛ اعداد فیثاغورسی ضلع‌های یک مثلث قائم‌الزاویه را تشکیل می‌دهند. با توجه به رابطه هر گروه اعداد فیثاغورسی (مثلاً a , b , c) با اعداد فیثاغورسی دیگر می‌توان آن‌ها را به دو گروه تقسیم نمود:
اعداد فیثاغورس اول وجود ندارد

اعداد فیثاغورسی غیر متشابه

سه‌تایی‌های فیثاغورسی‌ای که مضاربی از دو سه‌تایی فیثاغورسی اول متفاوت باشند، یا هر دو خود، سه‌تایی‌های فیثاغورسی اول متفاوت باشند را سه‌تایی‌های فیثاغورسی غیر متشابه گویند.
به عنوان نمونه دو سه‌تایی فیثاغورسی (3,4،5) و (5,12,13)، غیر متشابه‌اند چراکه خود دو سه‌تایی فیثاغورسی اول هستند. و البته مثلث‌های حاصل از دو سه‌تایی فیثاغورسی غیر متشابه نیز باهم متشابه نیستند.

استفاده در طول تاریخ

در مصر باستان ابزاری که برای شناختن زاویه‌های ۹۰ درجه استفاده می‌شد، طنابی با ۱۲ گرهٔ مساوی بود که می‌توانست مثلثی با طول اضلاع ۳ و ۴ و ۵ بسازد و در نتیجه یکی از زوایا ۹۰ درجه می‌بود.

فهرست اعداد

در زیر فهرستی از اعداد فیثاغورسی کوچکتر از ۱۰۰ نوشته شده‌است:
(٣ ،  ٤ ، ٥)،(٦ ، ٨ ، ١٠)، (۵، ۱۲، ۱۳)، (۷، ۲۴، ۲۵)، (۸، ۱۵، ۱۷)، (۹، ۴۰، ۴۱)، (۱۱، ۶۰، ۶۱)، (۱۲، ۳۵، ۳۷)، (۱۳، ۸۴، ۸۵)، (۱۶، ۶۳، ۶۵)، (۲۰، ۲۱، ۲۹)، (۲۸، ۴۵، ۵۳)، (۳۳، ۵۶، ۶۵)، (۳۶، ۷۷، ۸۵)، (۳۹، ۸۰، ۸۹)، (۴۸، ۵۵، ۷۳)، (۶۵، ۷۲، ۹۷)، (۱۶۹٬۱۲۰٬۱۱۹)

در برنامه‌نویسی رایانه‌ای

برای به دست آوردن اعداد فیثاغورسی می‌توان از کدی شبیه به کد زیر استفاده کرد:
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 عددی بزرگ باشد بسیار کند خواهد بود.
در صورت استفاده از کدهای بهینه شده، نتیجهٔ برنامه بسیار سریع‌تر خواهد بود و برای محدودیت کوچکتر از ۱۰۱۰ در کسری از ثانیه به جواب خواهد رسید. محدودیت‌های دیگری که برای این کد می‌توان در نظر گرفت این است که مجموع اعدادی که به توان می‌رسند برابر با محدودیت کلی باشد. برای مثال تنها سه عدد فیثاغورثی ۲۰۰، ۳۷۵ و ۴۲۵ وجود دارند که مجموع آن‌ها دقیقاً ۱۰۰۰ است.
نمونه‌ای از کد به زبان سی‌پلاس‌پلاس که به صورت بهینه ( و نه کاملاً بهینه) با استفاده از بزرگ‌ترین مقسوم‌علیه مشترک چنین اعدادی را می‌یابد:
// تابع findPythTripletvector<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;}