資訊內容
?Scratch課堂丨學數學-算勾股數
勾股數
勾股數又名畢氏三元數?。勾股數就是可以構成一個直角三角形三邊的一組正整數。勾股定理:直角三角形兩條直角邊a、b的平方和等于斜邊c的平方(a2+b2=c2)
01
題目
請寫出100以內所有的勾股數?
02
解題思路
我們用編寫程序的方式可以快速解出這道題目。我們知道最小勾股數是3、4、5 。要避免寫程序算出3、4、5和4、3、5這樣重復的勾股數,就要使三個數符合a
03
程序腳本案例

04
其它編程語言實現
?Python
#通過公式求勾股數
def Ht(k, m):
? ? ? ? ? ? a = k * (m * m - n * n)
? ? ? ? ? ? b = k * (2 * m * n)
? ? ? ? ? ? c = k * (m * m ?+ n * n)
? ? result = []
? ? for k0 in range(1, k + 1):
? ? ? ? for m0 in range(2, m + 1):
? ? ? ? ? ? for n0 in range(1, m0):
? ? ? ? ? ? ? ? a = k0 * (m0 * m0 - n0 * n0)
? ? ? ? ? ? ? ? b = k0 * (2 * m0 * n0)
? ? ? ? ? ? ? ? c = k0 * (m0 * m0 ?+ n0 * n0)
? ? ? ? ? ? ? ? if not {a, b, c} in result:
? ? ? ? ? ? ? ? ? ? result.append({a, b, c})
? ? result = [sorted(list(x)) for x in result]
? ? return (sorted(result,key=lambda x:x[0]),
? ? '共有 {length} 組勾股數'.format(length = len(result)))
Ht(10, 10) ?
c++ ? ?
#include?
using?namespace?std;
int?main()
{
????int?a,?b,?c;
????for?(a?=?1;?a?<?100;?a++)
????for?(b?=?1;?b?<?100;?b++)
????for?(c?=?1;?c?<?100;?c++)
????if?(a< p="">
????????cout?<<?a?<<?"?"?<<?b?<<?"?"?<<?c?<<?endl;
????return?0;
}
05
試一試
使用起邊的算法找出自然數100-1000中所有勾股數哦!
聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯系刪除
