Esto responde el caso de $n\neq 1$. Sin considerar $\tan60\tan60\tan x\tan(90-x)=3$, el código
#include <stdio.h>
#include <math.h>
int main ()
{
double result;
double tantable[90];
int a=0,b=0,c=0,d=0;
for(a=1;a<90;++a)
tantable[a]=tan(a*M_PI/180.0d);
for(a=89;a>0;--a)
for(b=a;b>0;--b)
for(c=b;c>0;--c)
for(d=c;d>0;--d){
result = tantable[a]*tantable[b]*tantable[c]*tantable[d];
int appresult=round(result);
if(a+d==90&&b==60&&c==60) continue;//tan(x)tan60tan60tan(90-x)
if(c+d==90&&a==60&&b==60) continue;//tan60tan60tan(x)tan(90-x) [just a permutation]
if(appresult>1 && (appresult-result<0.000001) && (result-appresult<0.000001))
printf("%d,%d,%d,%d->%lf\n",a,b,c,d,result);
}
return 0;
}
Se produce el siguiente registro(comentado por mí):
89,36,34,14->7.000000//No. Error is beyond precision
88,78,37,31->60.999999//No
80,60,40,20->3.000000//Yes! (1)
79,74,44,22->7.000000//No. Error is beyond precision
78,59,57,53->16.000000//No. Error is beyond precision
76,76,64,23->14.000000//No. Error is beyond precision
73,73,61,25->9.000000//No. Error is beyond precision
72,72,36,36->5.000000//Yes!(2)
60,60,60,60->9.000000//Yes!(3)
La verificación de la identidad:
$(1)$:
$$\tan(30+x)\tan(3x)\tan(30-x)\tan(90-x)=1$$
$$\implies \tan40\tan30\tan20\tan80=1$$
$$\implies \tan40\tan20\tan80=\tan60$$
$$\implies (1)=\tan60\tan60=3$$
$(2)$: We know(or if skeptic, we can verify by setting $\sin3x=\cos2x$)
$$\tan18=\sqrt{\frac{5-2\sqrt{5}}{5}}$$
Por doble ángulo de la fórmula, obtenemos
$$\implies\tan36=\sqrt{5-2\sqrt{5}}$$
Y por $\frac{1}{\tan{18}}=\tan72$
$$\implies\tan72=\sqrt{\frac{5}{5-2\sqrt{5}}}$$
$$\implies\tan72\tan36=\sqrt{5}\implies\tan72\tan72\tan36\tan36=5$$
Y $(3)$ es trivial.
Así, vemos que el único otro ejemplo de las identidades de los formularios:
$$\tan(x)\tan(60)\tan(60)\tan(90-x)=3$$
$$\tan(80)\tan(60)\tan(40)\tan(20)=3$$
$$\tan(72)\tan(72)\tan(36)\tan(36)=5$$
$$\tan(60)\tan(60)\tan(60)\tan(60)=9$$
Progress in the $n=1$ case(does not consider known cases):
#include <stdio.h>
#include <math.h>
int main ()
{
double result;
double tantable[90];
int a=0,b=0,c=0,d=0;
for(a=1;a<90;++a)
tantable[a]=tan(a*M_PI/180.0);
for(a=89;a>0;--a)
for(b=a;b>0;--b)
for(c=b;c>0;--c)
for(d=c;d>0;--d){
result = tantable[a]*tantable[b]*tantable[c]*tantable[d];
if((1-result<0.000001) && (result-1<0.000001)&&(a+d!=90)&&(b+c!=90)){
if((d%3==0) && (b-d/3)==30 && (c+d/3)==30&&(a+d/3)==90) continue;
if(a+3*d==90 && b-d==60&&c+d==60) continue;
if(a-d==60 && b+d==60&&c+3*d==90) continue;
if(a-d==60 && c+d==60&&b+3*d==90) continue;
printf("%d,%d,%d,%d->%f\n",a,b,c,d,result);
}
}
return 0;
}
These are the remaining cases (equivalences commented by me, they are apparently true)
87,51,15,9->1.000000//1
87,27,21,15->1.000000 //2
84,48,24,12->1.000000//3
81,75,39,3->1.000000//1
81,57,21,15->1.000000//4
78,66,42,6->1.000000//3
75,69,63,3->1.000000//2
75,69,33,9->1.000000//4
75,39,33,27->1.000000//5
63,57,51,15->1.000000//5
We can reduce the number of statements to be proved:
Assuming $(1)$
$$\tan87\tan51\tan15\tan9=1\implies\tan51\tan15\tan9=\tan3 \tag{a.1}$$
$$\tan(30-x)\tan(30+x)\tan3x=\tan x\implies\tan27\tan33\tan9=\tan3 \tag{a.2}$$
$$(\text{a}.1),(\text{a}.2)\implies\tan51\tan15=\tan27\tan33\iff (5)$$
Assuming $(4)$
$$\tan75\tan69\tan33\tan9=\implies\tan75\tan69\tan33=\tan81 \tag{b.1}$$
$$\tan(60+x)\tan(60-x)\tan x=\tan3x\implies\tan87\tan33\tan27=\tan81 \tag{b.2}$$
$$(\text{b}.1),(\text{b}.2)\implies\tan75\tan69=\tan87\tan27\iff (2)$$
Así, sólo tenemos que demostrar o refutar
$$\tan87\tan51\tan15\tan9=1\tag{1}$$
$$\tan75\tan69\tan33\tan9=1\tag{2}$$
$$\tan78\tan66\tan42\tan6=1\tag{3}$$
Verification of $(3)$
$$\tan(60+x)\tan(60-x)\tan(x)=\tan3x\implies\tan78\tan42\tan18=\tan54$$
$$\implies\tan78\tan42=\tan54\tan72 \tag{3.1}$$
$$\tan(60+x)\tan(60-x)\tan(x)=\tan3x\implies\tan66\tan54\tan6=\tan18$$
$$\implies\tan72\tan6\tan66\tan54=1 \tag{3.2}$$
$$(3.1),(3.2)\implies\tan6\tan66\tan78\tan42\iff (3)$$
No he sido capaz de demostrar/refutar las otras identidades hasta ahora.