问题的瓶颈在于如何记录已经发现的勾股数- Module[
- {found, cnt, i, j, k},
- found = {};
- cnt = Table[0, {1000}];
- For[i = 1, i < 500, i++,
- For[j = 1, j < i, j++,
- If[2 i j + 2 i i > 1000, Break[]];
- For[k = 1, k < 1000, k++,
- If[k (2 i j + 2 i i) > 1000, Break[]];
- If[!
- MemberQ[found,
- Hash[{2 i j k, k (i i - j j), k (i i + j j)}]],
- cnt[[k (2 i j + 2 i i)]]++;
- found =
- Append[found, Hash[{2 i j k, k (i i - j j), k (i i + j j)}]]
- ]
- ]
- ]
- ];
- j = 1;
- For[i = 2, i < 1001, i++, If[cnt[[j]] < cnt[[i]], j = i]];
- j
- ] // Timing
复制代码 时间: {0.030996, 840} |