主题:请教一个很简单的问题
goldenfire
[专家分:0] 发布于 2005-06-15 20:56:00
我是Qbasic 入门学习者,今有一数学问题需要使用Qbasic解决,尝试了一下编了几行代码没有成功,请各位帮帮忙
我的题目:
a=2*d+e-b-c
a=e*(d^2-e^2/4)^0.5/b
a=(c^2-b^2)^0.5
未知数a,b,c,d,e
求解不定方程的正整数解
我设计的代码
for a = 100 to 1000
for b = 100 to 1000
for c = 100 to 1000
for d = 100 to 1000
a=2*d+e-b-c
a=e*(d^2-e^2/4)^0.5/b
a=(c^2-b^2)^0.5
print a,b,c,d,e
if a>1 and b>1 and c>1 and d>1 and e>1 then print a,b,c,d,e :end
next d,c,b,a
end
运算结果出现illegal function
请各位指点一下哪里的问题,并附带上正确的代码
万分感谢
回复列表 (共22个回复)
11 楼
goldenfire [专家分:0] 发布于 2005-06-16 11:20:00
那请楼上的大哥给出一个能用QB解决问题的方法,并府上代码。
我试过用数学方法,想不出来
麻烦了
12 楼
moz [专家分:37620] 发布于 2005-06-16 11:24:00
我估计你最后一个式子的+号是搞错了的,
应该是 a*b=e*(d^2-e^2/4)^0.5
我看得出来,
问题估计是求一个直角三角形和一个等腰三角形,它们的周长和面积相等.
13 楼
moz [专家分:37620] 发布于 2005-06-16 11:29:00
这个问题(对于我来说)不能说很简单,因为我读的书少.
不过我记得学圆的时候是有这么一件事的吧?
一根弧固定,顶点随圆边移动?什么东西不变来着?
14 楼
goldenfire [专家分:0] 发布于 2005-06-16 11:33:00
没错,题目就是这样。应该是减号,打错了
谢谢楼上的了,我去试试
15 楼
goldenfire [专家分:0] 发布于 2005-06-16 11:45:00
应该是面积吧?我不确定
16 楼
goldenfire [专家分:0] 发布于 2005-06-16 11:47:00
如果使用减号的话,还是只要一运行就illegal function,我个人认为可能是因为程序先试e,所以e一旦试倒比d大就出错了
17 楼
moz [专家分:37620] 发布于 2005-06-16 12:00:00
因为是三角形,而且还要是正整数,
QB中用穷举的办法也只好这样子了
我在语句中加多很多判断三角形的判断语句,
估计运行速度有点可怕.
for a=1 to 1000
for b=1 to 1000
for c=1 to 1000
if (c<a+b) and (c^2=a^2+b^2) then
for d=1 to 1000
for e=1 to 1000
if e<d*2 then
if (a+b+c=2*d+e) and (a*b=e*(d^2-e^2/4)^0.5) then
print a,b,c,d,e
endif
endif
next e,d
end if
next c,b,a
18 楼
moz [专家分:37620] 发布于 2005-06-16 12:45:00
再改良一下:
for a=1 to 1000
for b=a to 1000
c=(a*a+b*b)^0.5
if c=int(c) then
sl=a+b+c
for d=sl\4 to sl\2
e=sl-2*d
if e<d*2 then
if a*b=e*(d^2-e^2/4)^0.5 then
print a,b,c,d,e
endif
endif
next d
end if
next b,a
速度依然太慢.
正整数我已经算到5000了,估计应该不大可能了,学学数学算算吧.
19 楼
moz [专家分:37620] 发布于 2005-06-16 23:02:00
又想起了一个问题,
记得有一个三边求面积的公式的,
也就是三边定一个三角形.
估计是没有等周长等面积的三角形的吧,
只有等腰直角三角形.也就是同一个三角形了吧.
只是猜想的,也不敢肯定,不为别的,只因为自己没文化.
20 楼
goldenfire [专家分:0] 发布于 2005-06-17 08:54:00
麻烦楼上的了,我今天才知道,这是一道经典数学难题,题设很简单,解答过程极其复杂,而且是唯一解,可能是有内在定理保证的,真是谢谢了
我来回复