求大神解决一个MATLAB程序
如果p是一个直角三角形的周长,三角形的三边长{a,b,c}都是整数。对于p= 120一共有三组解:
{20,48,52}, {24,45,51}, {30,40,50}
对于1000以下的p中,哪一个能够产生最多的解? 展开
2014-06-23
function [ Num,n,A ] = MostRTG( UpperNum )
%mostrtg 求取给定最大值以内的数能够分解的成直角三角形最多的数
% 此处显示详细说明
% UpperNum 是输入参数,设置最大数,默认值为1000
% Num 返回找到的数,n 返回可拆解的个数,A 返回可拆解的直角三角形各边边长
if nargin==0
UpperNum=1000;
end
n=0;
for i=1:UpperNum
m=0;
B=[];
for j=fix(i/3)+1:fix(i/2)
for k=fix(j/2):j
l=i-j-k;
if l^2+k^2==j^2 && l<k && l>0
m=m+1;
B=[B;l k j];
end
end
end
if m>n
Num=i;
n=m;
A=B;
end
end
end
结果是840,8个
2024-09-19 广告