Wolfram mathematica 寻找勾股三元组
我一直在用Mathematica中的Do和If语句寻找毕达哥拉斯三元组 我需要测试两个整数(a,b)是否构成勾股三元组,其中: 1. 可能最好保存结果,而不是使用Wolfram mathematica 寻找勾股三元组,wolfram-mathematica,pythagorean,Wolfram Mathematica,Pythagorean,我一直在用Mathematica中的Do和If语句寻找毕达哥拉斯三元组 我需要测试两个整数(a,b)是否构成勾股三元组,其中: 1. 可能最好保存结果,而不是使用Print: Reap[Do[ If[ IntegerQ[r = Sqrt[i^2 + j^2]], Sow[{i, j, r}]], {i, 100}, {j, i - 1}]][[2, 1]] 另一种方式 Cases[Append[#, Norm@#] & /@ Subsets[Range[100], {
Print
:
Reap[Do[ If[ IntegerQ[r = Sqrt[i^2 + j^2]], Sow[{i, j, r}]], {i,
100}, {j, i - 1}]][[2, 1]]
另一种方式
Cases[Append[#, Norm@#] & /@
Subsets[Range[100], {2}], {_, _, _Integer}]
{3,4,5},{5,12,13},{6,8,10},{7,24,25},{8,15,17},{9,12,
15}, {9, 40, 41}, {10, 24, 26}, {11, 60, 61}, {12, 16, 20}, {12,
35, 37}, {13, 84, 85}, {14, 48, 50}, {15, 20, 25}, {15, 36,
39}, {16, 30, 34}, {16, 63, 65}, {18, 24, 30}, {18, 80, 82}, {20,
21, 29}, {20, 48, 52}, {20, 99, 101}, {21, 28, 35}, {21, 72,
75}, {24, 32, 40}, {24, 45, 51}, {24, 70, 74}, {25, 60, 65}, {27,
36, 45}, {28, 45, 53}, {28, 96, 100}, {30, 40, 50}, {30, 72,
78}, {32, 60, 68}, {33, 44, 55}, {33, 56, 65}, {35, 84, 91}, {36,
48, 60}, {36, 77, 85}, {39, 52, 65}, {39, 80, 89}, {40, 42,
58}, {40, 75, 85}, {40, 96, 104}, {42, 56, 70}, {45, 60, 75}, {48,
55, 73}, {48, 64, 80}, {48, 90, 102}, {51, 68, 85}, {54, 72,
90}, {56, 90, 106}, {57, 76, 95}, {60, 63, 87}, {60, 80, 100}, {60,
91, 109}, {63, 84, 105}, {65, 72, 97}, {66, 88, 110}, {69, 92,
115}、{72、96、120}、{75、100、125}、{80、84、116}
如果需要运行非常大的n
,而子集将消耗大量内存,则Do
实际上更好
Reap[Do[ If[ IntegerQ[r = Sqrt[i^2 + j^2]], Sow[{i, j, r}]], {i,
100}, {j, i - 1}]][[2, 1]]
Cases[Append[#, Norm@#] & /@
Subsets[Range[100], {2}], {_, _, _Integer}]