编写一个函数getpythogorean(Z),它返回所有满足以下属性的正整数,对于小于或等于Z的所有正整数:
x ^ 2 + y ^ 2 = z ^ 2
该函数不应包含任何循环。
以下是输入/输出示例
getpythogorean(20)
ans = [3 4 5; 6 8 10; 5 12 13; 9 12 15; 8 15 17; 12 16 20]
所以基本上,你得到一个Z的值并输出x,y和z,导致z< 20
截至目前,这就是我所拥有的:
function [out] = getpythogorean(Z)
[X,Y] = meshgrid(1:Z,1:Z);
W = sqrt((X。^ 2)+(Y。^ 2));
端
现在我需要以某种方式过滤W的值并保存它们的位置以引用回输出的X和Y矩阵。据说这可以用4行代码完成。
非常感谢任何有关如何解决这个问题的建议。
谢谢!
答案 0 :(得分:2)
你可以添加:
[x y]=find( abs(W-round(W))<eps )
找到W的整数值及其对应的x和y索引。然后
[x y W(find( abs(W-round(W))<eps ))]
会给你所有三胞胎......