// Javascript (c) Arndt Brünner, Version: 10. 10. 2001
// Zum Berechnen von pythagoreischen Tripeln für pythagotripel.htm
// benötigt prim.js

function getTripel(n,k,h)
{
	var N=n=String(n).replace(/,/,".");
	n=Number(n);
	if(isNaN(n))return " \n\n\n              Ungültige Eingabe.";
	var dez=1,idez=0,st=status;
	var ik=(N+".").indexOf(".")+1;
	while(ik<N.length){ik++;n*=10;dez*=10;idez++;}
	//if((idez%2)==1){dez*=10;n*=10;}
	n=Math.round(n);
	var a=Math.abs(n), a2=a*a, b,t="",i;
	if(k)
	{
	status="Primfaktorzerlegung von "+n;
	if (isprim(n)==0)
	{
		primfz(a);
		for(i=0;i<prfn.length;i++)prfn[i]*=2;
		status="Erzeuge Teilermenge";
		var T=getTeiler();
	}else
	T=new Array(1,n,n*n);
	status="Erzeuge Tripel mit "+n+" als Kathete";
	for(i=T.length-1;i>=0;i--)
	{
		b=a2/T[i]-T[i];
		if((b%2==0)&&(b>2))
		if(a<b/2) t+=" "+a/dez+"² + "+b/2/dez+"² = "+(b/2+T[i])/dez+"²\n"; 
		else  t+=" "+b/2/dez+"² + "+a/dez+"² = "+(b/2+T[i])/dez+"²\n";
	}
	t+="\n";
	}
	if(h)
	{
	var g=0.2929*a;
	a2=2*a;
	var qqq=((a2-1)*1),q=Math.floor(Math.sqrt(qqq)),qq=q*q,hi=0;
	for(i=1;i<=g;i++)
	{
		qqq=((a2-i)*i);
		while(qqq>qq){q++;qq+=q+q-1;}
		if(qq==qqq)
		{
			if(q<a-i) t+=" "+q/dez+"² + "+(a-i)/dez+"² = "+a/dez+"²\n";
			else  t+=" "+(a-i)/dez+"² + "+q/dez+"² = "+a/dez+"²\n";
			hi++;
		}
		if((i%1000)==0)status="Suche läuft für "+n+" als Hypotenuse: "+i+"   ("+Math.floor(100*i/g)+"%), gefunden: "+hi;
	}
	status=st;
	}
	t=t.replace(/\./g,",");
	if((t=="\n")||(t=="")){
	if(h&&k)t=" \n\n  Es gibt kein pythagoreisches Tripel,\n  das "+n+" enthält.";
	else if(h)t=" \n\n  Es gibt kein pythagoreisches Tripel\n  mit der Hypotenuse "+n+".";
	else if(k)t=" \n\n  Es gibt kein pythagoreisches Tripel\n  mit "+n+" als Kathete.";
	else t=" \n\n  In pythagoreischen Tripeln kommen außer\n  Hypotenuse und Katheten keine weiteren\n  Zahlen vor...";
	}
	return t;
}