<>我的想法是这样的:假设存在,且设三边的长分别为a,b,c,则有:</P>
<>a+b+c=2004,a^2+b^2=c^2,a,b,c为正整数。</P>
<>可以消去c得到关于a,b的等式:</P>
<P>a=2004*(1-1002/(2004-b));</P>
<P>又很容易知道b的范围是:1<=b<=1001,然后从1到1001搜索出使得a为正整数b的值。</P>
<P>我用matlab写了一段简单的程序清单如下:</P>
<P 6.0pt?><FONT face=宋体>A=[];
</FONT>
<p>
<P 6.0pt?><FONT face=宋体>n=1;
<p></FONT>
<p>
<P 6.0pt?><FONT face=宋体>for b=1:1001
<p></FONT>
<p>
<P 6.0pt?><FONT face=宋体> if(rem((1-1002/(2004-b)*2004),2)==0|(rem(2004*(1-1002/(2004-b)),2)==1))
<p></FONT>
<p>
<P 6.0pt?><FONT face=宋体> A(n)=2004*(1-1002/(2004-b));
<p></FONT>
<p>
<P 6.0pt? mso-line-height-alt: 21pt;><FONT face=宋体>n=n+1;end
<p></FONT>
<p>
<P 6.0pt? mso-line-height-alt: 21pt;><FONT face=宋体>end
<p></FONT>
<p>
<P 6.0pt?><FONT face=宋体>A
<p></FONT>
<p>
<P>运行得到的答案是a=501,但是漏了一个b=668。最后的结果是:存在这样的三角形</P>
<P>其三边长分别是:501,668,835。</P>
<P>是程序的原因,本人没有弄清楚原因!</P>
<P 6.0pt?>可能的问题是(判断一个表达式的值是否为整数的if语句使用不当),</P>
<P 6.0pt?>我的问题是在matlab中是怎么样实现判断一个表达式是否为整数的呢?</P>
<P 6.0pt?>不知道我的这个语句能否做出正确的判断?</P>
<P 6.0pt?>望知情者告知。本人感激不尽!!!!</P>
<P 6.0pt?> levy </P>
<P 6.0pt?> 2005 02 25
<p>
<p>
<p> |