Four Fours problem: Any number with One Four
The four fours puzzle is a recreational puzzle that asks: can you create an expression using four fours and some arithmetic operations that evaluates to some number n? The problem often specifies some operations such as addition, subtraction, multiplication, division, exponentiation, concatenation (e.g. 44), negation, decimal point, repeating decimal, square root, nth root, and factorial.
To get numbers larger than 100 (for example 113) you must use some additional operations. Different people like to introduce operations such as percent (see David Bevan’s site) or the gamma function (see Dave Wheeler’s site). Pete Karsanow’s site has a number of good links to other solutions sites.
Some people have demonstrated that it is possible to get any number with three fours if you introduce the logarithm function (for example see here). (Thus the logarithm function is generally disallowed as an operation in the four fours problem.) Paul Bourke has a contribution by “whetstone” that shows how to get any number with two fours if you use the logarithm function and the percent sign.
This page shows that it is possible to create any number with one four using trigonometric functions. In short:
n = sec(atan(…(sec(atan(4))…)) (n2-42 times), for n>4
n = tan(asec(…(tan(asec(4))…)) (42-n2 times), for n=0, 1, 2, 3
n = 4, for n = 4
Using the trigonometric relation for the tangent and secant functions
tan2(u)+1 = sec2(u)
you can then derive that
sec(atan(x)) = sqrt(x2+1)
(This does not depend on whether you are using degrees or radians!) Therefore
sec(atan(sec(atan(x)))) = sqrt((sqrt(x2+1))2+1) = sqrt(x2+2)
sec(atan(…(sec(atan(x))…)) (k times) = sqrt(x2+k)
Thus repeated application of sec(atan()) will create the next largest square root in a sequence. For example, the table shows a formula that evaluates to 5 using just one 4 and the secant and arctangent functions.
x |
sec(atan(x)) |
|
4 |
4.123105626 |
sec(atan(4)) |
4.123105626 |
4.242640687 |
sec(atan(sec(atan(4)))) |
4.242640687 |
4.358898944 |
sec(atan(sec(atan(sec(atan(4)))))) |
4.358898944 |
4.472135955 |
sec(atan(sec(atan(sec(atan(sec(atan(4)))))))) |
4.472135955 |
4.582575695 |
sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(4)))))))))) |
4.582575695 |
4.69041576 |
sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(4)))))))))))) |
4.69041576 |
4.795831523 |
sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(4)))))))))))))) |
4.795831523 |
4.898979486 |
sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(4)))))))))))))))) |
4.898979486 |
5 |
sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(4)))))))))))))))))) |
The last line shows the expression for 5 that uses just one four.
For any integer n greater than 4, there is a k that satisfies the equation above (specifically k = n2-42). This means that the number of times you need to apply sec(atan()) is n2-42 for any n greater than 4. (It takes a lot of operations, but it is possible!)
n = sec(atan(…(sec(atan(4))…)) (n2-42 times), for n>4
To create an expression for the numbers 3, 2, 1, and 0 using one four, the same expression
tan2(u) = sec2(u)-1
yields the formula
tan(asec(x)) = sqrt(x2-1)
So repeated application of tan(asec()) gives the next lowest square root in a sequence.
n = tan(asec(…(tan(asec(4))…)) (42-n2 times), for n=0, 1, 2, 3
The following table shows the expression for 3, 2, 1, and 0.
x |
tan(asec(x)) |
|
4 |
3.872983346 |
tan(asec(4)) |
3.872983346 |
3.741657387 |
tan(asec(tan(asec(4)))) |
3.741657387 |
3.605551275 |
tan(asec(tan(asec(tan(asec(4)))))) |
3.605551275 |
3.464101615 |
tan(asec(tan(asec(tan(asec(tan(asec(4)))))))) |
3.464101615 |
3.31662479 |
tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(4)))))))))) |
3.31662479 |
3.16227766 |
tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(4)))))))))))) |
3.16227766 |
3 |
tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(4)))))))))))))) |
3 |
2.828427125 |
tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(4)))))))))))))))) |
2.828427125 |
2.645751311 |
tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(4)))))))))))))))))) |
2.645751311 |
2.449489743 |
tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(4)))))))))))))))))))) |
2.449489743 |
2.236067977 |
tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(4)))))))))))))))))))))) |
2.236067977 |
2 |
tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(4)))))))))))))))))))))))) |
2 |
1.732050808 |
tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(4)))))))))))))))))))))))))) |
1.732050808 |
1.414213562 |
tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(4)))))))))))))))))))))))))))) |
1.414213562 |
1 |
tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(4)))))))))))))))))))))))))))))) |
1 |
0 |
tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(tan(asec(4)))))))))))))))))))))))))))))))) |
Some people like to do the problem using combinations of different numbers besides four, for example, four zeros. Using the approach above, you can create any number using one of any digit, for example zero. The table below shows the expressions for 0, 1, 2, and 3 using one zero.
x |
sec(atan(x)) |
|
0 |
1 |
sec(atan(0)) |
1 |
1.414213562 |
sec(atan(sec(atan(0)))) |
1.414213562 |
1.732050808 |
sec(atan(sec(atan(sec(atan(0)))))) |
1.732050808 |
2 |
sec(atan(sec(atan(sec(atan(sec(atan(0)))))))) |
2 |
2.236067977 |
sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(0)))))))))) |
2.236067977 |
2.449489743 |
sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(0)))))))))))) |
2.449489743 |
2.645751311 |
sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(0)))))))))))))) |
2.645751311 |
2.828427125 |
sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(0)))))))))))))))) |
2.828427125 |
3 |
sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(sec(atan(0)))))))))))))))))) |
The number of operations sec(atan()) you need to create an expression that evaluates to n is n2.
n = sec(atan(…(sec(atan(0))…)) (n2 times), for n>0
The same approach is possible using the cosecant and cotangent functions.
cot2(u)+1 = csc2(u)
Therefore
csc(acot(x)) = sqrt(x2+1)
cot(acsc(x)) = sqrt(x2-1)
So repeated applications of csc(acot()) give the next largest square root in a sequence, similar to sec(atan()) above.
Back to fractal designs using pattern blocks.
Copyright 2006 by Jim Millar