【发布时间】:2018-01-02 04:17:35
【问题描述】:
我自己在 MATLAB 上工作,并且在 Project Euler 上做问题 9 它指出
" 毕达哥拉斯三元组是三个自然数的集合,a
a2 + b2 = c2 例如,32 + 42 = 9 + 16 = 25 = 52。
恰好存在一个毕达哥拉斯三元组,其 a + b + c = 1000。 找到产品 abc。”
下面是我写的代码;但是,它会编译,但不会生成和输出。我希望得到一些关于哪里出了问题的反馈,所以我可以修复它。
谢谢,
syms a;
syms b;
syms c;
d= 1000;
d= a + b + c ;
ab= a.^2 + b.^2;
ab= c.^2;
c
【问题讨论】:
-
它应该执行一个搜索。此外,您的代码没有 natural 数字的概念。
-
您需要遍历所有可能的整数并查看它们是否有效。符号数学包不会做你想做的事。
-
如果您想以更类似于 Matlab 的方式(矢量化而不是循环)来执行此操作,请生成矩阵
1:1000通过ndgrid沿行和列重复。或者更好的是使用bsxfun/ 隐式单例扩展。hypot可能很方便
标签: matlab integer-arithmetic binary-operators