作业帮 > 综合 > 作业

求大神解决一个MATLAB程序

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/23 09:52:24
求大神解决一个MATLAB程序
如果p是直角三角形{a,b,c}的周长,1000以下的p中哪一个具有最多的解?
如果p是一个直角三角形的周长,三角形的三边长{a,b,c}都是整数.对于p= 120一共有三组解:
{20,48,52},{24,45,51},{30,40,50}
对于1000以下的p中,哪一个能够产生最多的解?
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个