(Look he said 1) it was scalene, so it can't be equilateral.)
This is a seriously non-trivial and interesting question in number theory (more than actual geometry).
I was unable to solve it without a program (Python source-code attached at bottom).
(Does your teacher expect you to solve these on paper?!?
If so they are a serious psychopath, or you're all geniuses. Show them my working and see if there isn't a shortcut)
2) It does not contain a right angle => doesn't satisfy Pythagoras (could possibly have a reflex angle).
Reject any (a,b,c) with a²+b²=c²
3) Sides a,b,c are distinct integers (since it must be scalene)
Without loss of generality we can assume 1<=a
=> each of the 3 sides must also obey the Triangle Inequality:
b
c
a
4) Area = √(s)(s-a)(s-b)(s-c) is an integer
So our solution space is all integer tuples (a,b,c)
satisfying: 1<=a
(it seems from solution below that the solution takes the form k(a,b,c) where k is the HCF and exactly two of a,b,c must be odd - but hard to deduce that upfront)
I had to cheat and write a program to solve it, and here are the answers of smallest area:
(4,13,15) -> area 24.0000 ** SOLUTION **
(3,25,26) -> area 36.0000
(9,10,17) -> area 36.0000
(7,15,20) -> area 42.0000
(6,25,29) -> area 60.0000
(11,13,20) -> area 66.0000
(5,29,30) -> area 72.0000
(8,29,35) -> area 84.0000
(10,17,21) -> area 84.0000
(13,14,15) -> area 84.0000
(12,17,25) -> area 90.0000
(8,26,30) -> area 96.0000
(19,20,37) -> area 114.0000
(16,25,39) -> area 120.0000
(15,28,41) -> area 126.0000
(11,25,30) -> area 132.0000
(18,20,34) -> area 144.0000
(15,26,37) -> area 156.0000
(10,35,39) -> area 168.0000
(17,25,26) -> area 204.0000
(17,25,28) -> area 210.0000
(17,28,39) -> area 210.0000
(12,39,45) -> area 216.0000
...
Or, you might find it more efficient to work in reverse and consider all integer areas starting at 1, square it, factorize the square, then try to deduce a,b,c by successfully allocating those factors among the terms s*(s-a)*(s-b)*(s-c) subject to the inequality constraints on a,b,c above (this will require recursion, or nested loops).
______________________
THEORETICAL APPROACH
=> s = (a+b+c)/2 is either an integer or an integer + 1/2
Let's consider the case where s is also an integer:
So we just start at a=1,b=2,c=3 => s=(1+2+3)/2 =3
and check if Area² = (s)(s-a)(s-b)(s-c) is a perfect square.
If not we increment one of a,b,c while respecting
the order relation a
b
c
a
So we have a large 3-dimensional solution space.
We can condition this search better if we write:
a=a
b=a+x
c=b+y = a+x+y
s=(3a+2x+y)/2
where x,y must be positive (non-zero) integers
Then the triangle inequality gives us:
b=a+x x
c=b+y y
So putting all these together gives us:
1<=a ( < a+x < a+x+y )
1<=y
1<=x
and Area² = (3a+2x+y)/2)(s-a)(s-(a+x)(s-(a+x+y))
= ((3a+2x+y)/2)(3a+2x+y)/2 -a)((3a+2x+y)/2 -(a+x)((3a+2x+y)/2 -(a+x+y))
= (3a+2x+y)(3a+2x+y -2a)(3a+2x+y -2a-2x)(3a+2x+y -2a-2x-2y)/16
= (3a+2x+y)(a+2x+y)(a+y)(a-y)/16
Looking at it this still more we can say some obvious things:
Area² = (3a+2x+y)(a+2x+y)(a+y)(a-y)/16
=> the RHS brackets must contain a factor 16, and any other factors must multiply to a perfect square.
In order to contain a factor 16, (a+y) must be even, because if it's odd, all the brackets (3a+2x+y)(a+2x+y)(a+y)(a-y) will be odd (since 2x must be even).
Hence (a+y) must be even.
(You could attack this as a number theory problem by its residues mod 2,3 etc., but that could be overkill)
So if you were programming it you could try exploring the solution space:
for a=1..100
for y=1..(a-1) with a+y must be even
for x=1..100
Here we try them manually
(a,y,x) = (1,1,1) => violates y
(a,y,x) = (2,1,1) => Area² = (3a+2x+y)(a+2x+y)(a+y)(a-y)/16 not square
We can try to appreciate why the solution works:
(a,b,c)=(4,13,15) => s = 32/2 = 16
Area = √(s)(s-a)(s-b)(s-c) = √(16)(16-4)(16-13)(16-15)
= √(16)(12)(3)(1)
= √(2^6 * 3^2)
2³3²
_______________
[Python source-code; remember to indent it correctly]
import math,sys
sidemax=50
def isint(x):
return (x == int(x))
def istriangle(a,b,c):
# Check satisfies Triangle Inequality
return (a
def isrightangled(a,b,c):
return (pow(a,2)+pow(b,2) == pow(c,2))
def area(a,b,c):
s = (a+b+c)/2.
return math.sqrt(s*(s-a)*(s-b)*(s-c))
for a in range(1,sidemax-2):
for b in range(a+1,sidemax-1):
for c in range(b+1,sidemax):
if istriangle(a,b,c) and not isrightangled(a,b,c):
theArea = area(a,b,c)
if isint(theArea):
print '(%d,%d,%d) -> area %.4f' % (a,b,c,theArea)
#sys.exit(0)
2007-07-23 00:05:50
·
answer #1
·
answered by smci 7
·
0⤊
0⤋