// Version: 23.1.2005
// (c) Arndt Brünner

function run1()
{
	document.f1.t.value="Fehler";
	document.f1.tt.value="";
	var z0=Number(document.f1.z1.value);
	var n0=Number(document.f1.n1.value);
	var aeg=document.f1.aeg.checked;
	var aeg2=document.f1.aeg2.checked;
	if(isNaN(z0))return;
	if(isNaN(n0))return;
	if((z0<1)||(n0<2))return;
	if(z0>=n0)return;
	var t="",T="",Aeg=new Array(),minuten=0,sekunden=0,aegr="";
	var z=new Array(),n=new Array(),o=new Array(),i=1,j,s=0,g;
	o[0]="=";n[0]=n0;z[0]=z0;
	g=getggT(n0,z0);
	if(g>1)
	{
		T+="Kürze den Bruch "+z0+"/"+n0+" mit "+g+" zu ";
		n0/=g;z0/=g;
		T+=z0+"/"+n0+"\n\n";
	}
	n[0]=n0;z[0]=z0;
	var A=document.f1.anfang.value;
	A=A.replace(/1\//g,"").replace(/\D/g," ").replace(/ +/g," ");
	while(A.charAt(0)==" ")A=A.substr(1,A.length-1);
	while(A.charAt(A.length-1)==" ")A=A.substr(0,A.length-1);
	var AA=A.split(" ");s=z0/n0;
	for(j=0;(j<AA.length)&&(A!="");j++)
	{
		T+="Subtrahiere: "+z0+"/"+n0+" - 1/"+AA[j]+" = ";
		var nn0=AA[j]*n0,z0=AA[j]*z0-n0;n0=nn0;
		n[i]=AA[j];z[i]=1;o[i]="+";
		g=getggT(Math.abs(z0),n0);z0/=g;n0/=g;
		T+=z0+"/"+n0+"\n\n";
		if(z0<0)
		{
			T+="Fehler: "+z0+"/"+n0+" < 0";
			o[i++]=" – ";n[i]=n0;z[i]=-z0;
			document.f1.t.value=getBrStr(z,n,o,++i);
			document.f1.tt.value=T;
			return;
		}
		i++;
	}
	while((z0>1)||(aeg)||(aeg2))
	{
		z[i]=1;
		//alert(z0+"/"+n0+"\n"+aeg+"  "+aeg2);
		n[i]=(n0%z0==0)?n0/z0:Math.floor(n0/z0)+1;
		var n_i=n[i],nn=n[i];
		if((aeg)&&(n[i]<=60))
		{
			while(((60%n[i])!=0)&&(n[i]<60))n[i]++;
			if(n[i]==60)aeg=false;
			T+="Suche den größten in "+z0+"/"+n0+" enthaltenen Stammbruch durch die Division\n";
			T+=" "+n0+" : "+z0+(" = "+String(n0/z0)).replace(/\./,",").replace(/ ,/," 0,");
			T+=("\n Die kleinste Ganzzahl größer oder gleich "+(n0/z0)+" ist ").replace(/\./,",").replace(/ ,/," 0,")+n_i+".";
			if((60%n_i)==0)T+="\n "+n[i]+" ist ein Teiler von 60.";
			else T+="\n Der kleinste Teiler von 60 größer oder gleich "+(n_i)+" ist "+n[i]+".";
			T+="\n ==> größter enthaltener 'ägyptischer' Stammbruch ist 1/"+n[i]+".\n\n";
			Aeg[Aeg.length]=60/n[i]+"'";
			minuten+=60/n[i];
			if((z0==1)&&(n_i==n[i]))aeg=false;
		}
		else if((aeg2)&&(n[i]<=3600))
		{
			aeg=false;
			while(((3600%n[i])!=0)&&(n[i]<3600))n[i]++;
			if(n[i]>=3600)aeg2=false;
			T+="Suche den größten in "+z0+"/"+n0+" enthaltenen Stammbruch durch die Division\n";
			T+=" "+n0+" : "+z0+(" = "+String(n0/z0)).replace(/\./,",").replace(/ ,/," 0,");
			T+=("\n Die kleinste Ganzzahl größer oder gleich "+(n0/z0)+" ist ").replace(/\./,",").replace(/ ,/," 0,")+n_i+".";
			if((3600%n_i)==0)T+="\n "+n[i]+" ist ein Teiler von 3600.";
			else T+="\n Der kleinste Teiler von 3600 größer oder gleich "+(n_i)+" ist "+n[i]+".";
			T+="\n ==> größter enthaltener 'erweitert-ägyptischer' Stammbruch ist 1/"+n[i]+".\n\n";
			Aeg[Aeg.length]=3600/n[i]+'"';
			sekunden+=3600/n[i];
			if((z0==1)&&(n_i==n[i])){aeg2=false;}
		}
		else
		{
			aeg2=aeg=false;
			if(aegr=="")aegr=z0+"/"+n0;
			T+="Suche den größten in "+z0+"/"+n0+" enthaltenen Stammbruch durch die Division\n";
			T+=" "+n0+" : "+z0+(" = "+String(n0/z0)).replace(/\./,",").replace(/ ,/," 0,");
			T+=("\n Die kleinste Ganzzahl größer oder gleich "+(n0/z0)+" ist ").replace(/\./,",").replace(/ ,/," 0,")+n[i]+".";
			T+="\n ==> größter enthaltener Stammbruch ist 1/"+n[i]+".\n\n";
		}
		o[i]="+";
		T+="Berechne den Rest: "+z0+"/"+n0+" - 1/"+n[i]+ "  =  ";
		g=getggT(n0,n[i]);
		var hn=n0*n[i]/g;
		T+=z0*n[i]/g+"/"+hn+" - "+n0/g+"/"+hn+"  =  ";
		z0=(z0*n[i]-n0)/g;
		n0*=n[i]/g;
		T+=z0+"/"+n0;
		g=getggT(z0,n0);
		n0/=g;z0/=g;
		if(g>1)T+="  =  "+z0+"/"+n0;
		T+="\n\n";
		i++;
		//alert((z0/n0)+"  "+(1/60)+"  "+(aeg));
		if((z0/n0<1/3600)&&(aeg2)){aeg=aeg2=false;T+="Der Rest "+z0+"/"+n0+" ist kleiner als 1/3600.\n\n";}
		if((z0/n0<1/60)&&(aeg)){aeg=false;T+="Der Rest "+z0+"/"+n0+" ist kleiner als 1/60.\n\n";}
		if((i>100)||(n0+1==n0)||(n0>1e+16))break;
		//alert(nn+"  "+n0);
		if(nn==n0){if(aeg)aeg=false;else aeg2=false;}
	}
	if(n0>1e+16)
	{
		if(n0+1==n0)T+="Achtung: Dieser Nenner ist gerundet!\n\n";
		T+="Abbruch wegen Ganzzahlüberlaufs. (Nenner ist zu groß)";
		n[i-1]="x";z[i-1]=z0;
	}
	else if(z0==1)
	{
		T+="Der Rest ist ein Stammbruch - fertig.";
		if(aegr=="")aegr=z0+"/"+n0;
		z[i]=z0;n[i++]=n0;
	}
	else
	{
		T+="Es bleibt kein Rest - fertig.";
	}
	document.f1.t.value=getBrStr(z,n,o,i).replace(/x/,"x    x > 10000000000000000");
	if(Aeg.length>0)
	{
		Aeg[Aeg.length]=aegr+" h";
		T+="\n\n\nDarstellung mit Minuten"+((document.f1.aeg2.checked)?" und Sekunden":"");
		T+=":\n\n"+z[0]+"/"+n[0]+" h  =  "+Aeg.join(" + ")+"  =  "+minuten+"'"+((document.f1.aeg2.checked)?" "+sekunden+'"':"");
		if(aegr!="")
		{
			if(document.f1.aeg2.checked)
			{
				aegr=aegr.split("/");aegr[0]=parseInt(aegr[0])*3600;aegr[1]=parseInt(aegr[1]);
				g=getggT(aegr[0],aegr[1]);aegr[0]/=g;aegr[1]/=g;
				T+=" + ("+aegr[0]+"/"+aegr[1]+')"';
			}
			else
			{
				aegr=aegr.split("/");aegr[0]=parseInt(aegr[0])*60;aegr[1]=parseInt(aegr[1]);
				g=getggT(aegr[0],aegr[1]);aegr[0]/=g;aegr[1]/=g;
				T+=" + ("+aegr[0]+"/"+aegr[1]+")'";
			}
		}
	}
	document.f1.tt.value=T+"\n";
}


function run2()
{
	var z=Math.floor(Math.random()*48+2),n;
	do{
		n=Math.floor(Math.random()*100+z+1);
	}while(getggT(n,z)>1);
	document.f1.n1.value=n;document.f1.z1.value=z;
	document.f1.anfang.value="";
	run1();
}

function run4()
{
	var z=Math.floor(Math.random()*48+2),n;
	do{
		n=Math.floor(Math.random()*100+z+1);
	}while(getggT(n,z)>1);
	document.f2.n2.value=n;document.f2.z2.value=z;
	run3();
}

function run5()
{
	var nn=document.f2.n.selectedIndex+2;alert("");return;
	var sort=document.f2.s.selectedIndex==1;
	var max=Number(document.f2.max.value);
	if(max<100){max=100;document.f2.max.value=100;}
	document.f2.t.value="Fehler";
	var z0=Number(document.f2.z2.value);
	var n0=Number(document.f2.n2.value);
	if(isNaN(z0))return;
	if(isNaN(n0))return;
	if((z0<1)||(n0<2))return;
	if(z0>=n0)return;
	document.f2.t.value="bitte warten";
	var rz=new Array(nn+1),rn=new Array(nn+1),n=new Array(nn+1),z=new Array(nn+1);
	var o=new Array(nn+1);
	var i=1,t="",ti=0,r=(1==0),j;
	for(i=0;i<=nn;i++){o[i]=0;}
	i=1;
	rn[0]=n0;rz[0]=z0;
	do
	{
		n[i]=Math.ceil(rn[i-1]/rz[i-1])+o[i];
		rn[i]=n[i]*rn[i-1];
		rz[i]=n[i]*rz[i-1]-rn[i-1];
		var g=getggT(rn[i],rz[i]);
		rz[i]/=g;rn[i]/=g;r=(i==nn-1);
		var T="";
		for(j=1;j<=i;j++)T+="1/"+n[j]+" + ";T+="1/"+rn[i];status=T;

		if(rz[i]==1)
		{
			for(j=1;j<=i;j++)t+="1/"+n[j]+" + ";
			t+="1/"+rn[i]+"\n";
			ti++;if(ti==5)break;
			r=true;
		}
		if(n[i]>max)r=true;
		if(r)
		{
			if(i==1)break;
			o[i]++;
			for(j=i+1;j<=nn;j++)o[j]=0;
		}
		else
		{
			i++;
		}
	}while(true);
	document.f2.t.value=t.replace(/\n \+ /g,"\n");
}

function run3()
{
	//run5();return;
	var nn=document.f2.n.selectedIndex+2;
	var sort=document.f2.s.selectedIndex==1;
	var max=parseInt(document.f2.max.value);
	var maxanz=parseInt(document.f2.maxanz.value);if((maxanz==0)||(maxanz==NaN))maxanz=10000;
	if(max<10){max=10;document.f2.max.value=10;}
	document.f2.t.value="Fehler";
	var z0=parseInt(document.f2.z2.value);
	var n0=parseInt(document.f2.n2.value);
	var amin=parseInt(document.f2.amin.value);
	if((amin<2)||(isNaN(amin)))document.f2.amin.value=amin=2;
	if(isNaN(z0))return;
	if(isNaN(n0))return;
	if((z0<1)||(n0<2))return;
	if(z0>=n0){document.f2.t.value=" \n   Fehler!\n\n   Der Zähler muß kleiner als der Nenner sein.";return;}
	document.f2.t.value="bitte warten";
	var t=new Array(),ti=0,qz=new Array(nn+1),qn=new Array(nn+1);
	var z=new Array(),n=new Array(),o=new Array(),i=1;
	o[0]="=";n[0]=n0;z[0]=z0;
	var g=getggT(n0,z0);
	if(g>1){z0/=g;n0/=g;}
	document.f2.z2.value=z0;document.f2.n2.value=n0;
	if((nn==2)&&(z0==2)&&((n0%2)==1))return run4(n0);
	if((nn==2))return run5(z0,n0);
	var i,j,j0,j1,q=z0/n0;
	for(i=0;i<nn;i++)t[i]="";
	var a,b,c,d,e,f,D,x,tn=0,aa,bb,cc,dd,ee,ff,ssf,sse,ssd,ssc;
	a = Math.floor(1/q);
	if(a<amin-1)a=amin-1;
	t[0]="";
	do
	{
		a++;aa=1/a;
		if(sum(a,nn)<q){break;}
		if(Math.abs(1/a-q)<0.000000001)
		{
			t[0]+="1/" + a+"\n";tn++;
            	//continue;
		}
        	b = Math.floor(1/(q-aa))-1;
		//alert(b);
		if(b<=a)b=a;
		do
		{
			if(nn<2)break;
			b++;bb=1/b;
			if(b>max)break;
			status="Suche läuft: 1/"+a+" + 1/"+b+" + ...  gefunden: "+tn+" Zerlegungen";
			if(Math.abs(bb+aa-q)<.000000001)
			{
				if(test2(z0,n0,a,b))
				{
					if(sort)t[1]+="1/" + a + " + 1/" + b+"\n"; else t[0]+="1/" + a + " + 1/" + b+"\n";
					tn++;
				}
                		//continue;
			}
			D=(a*b*z0 - n0*(a+b));
			if(D!=0)
			{
				x = a*b*n0/D;
				if((Math.abs(x-Math.floor(x))<0.000000001)&&(x>b)&&(nn>2))
				{
					if(test3(z0,n0,a,b,x))
					{
						ti=(sort)?2:0;
						t[ti]+="1/"+a+" + 1/"+b+" + 1/"+x+"\n";
						tn++;
						//continue;
					}
				}
			}
	        	c = Math.floor(1/(q-aa-bb))-1;
			if(c<=b)c=b;
			ssc=aa+bb+cc;
			if(aa+bb+(nn-2)/(b+1)<q)continue;
			do
			{
				if(nn<4)break;
				c++;if(c>max)break;cc=1/c;
				status="Suche läuft: 1/"+a+" + 1/"+b+" + 1/"+c+" + ...  gefunden: "+tn+" Zerlegungen";
				//if((a==5)&&(b==29)&&(c>1230))alert(D+"   "+x);
				//if(c>2000)break;
				if(ssc+(nn-3)/(c+1)<q)break;
				D=(a*b*c*z0-a*n0*(b+c)-b*c*n0);
				x=a*b*c*n0/D;
				if((Math.abs(x-Math.floor(x))<0.00000000001)&&(x>c)&&(nn>3))
				{
					if(test4(z0,n0,a,b,c,x))
					{
						ti=(sort)?3:0;
						t[ti]+="1/"+a+" + 1/"+b+" + 1/"+c+" + 1/"+x+"\n";
						document.f2.t.value=t.join("");
						tn++;
						//continue;
					}
				}
				if(ssc+(nn-3)/(c+1)<q)continue;
		        	d = Math.floor(1/(q-aa-bb-cc))-1;
				ssd=aa+bb+cc+dd;
				if(d<=c)d=c;
				do
				{
					if(nn<5)break;
					d++;if(d>max)break;dd=1/d;
					if(ssd+(nn-4)/(d+1)<q)break;
					D=(a*b*c*d*z0-n0*(a*b*c+a*b*d+a*c*d+b*c*d));
					x=a*b*c*d*n0/D;
					if((Math.abs(x-Math.floor(x))<0.00000000001)&&(x>d)&&(nn>4))
					{
						if(test5(z0,n0,a,b,c,d,x))
						{
							ti=(sort)?4:0;
							t[ti]+="1/"+a+" + 1/"+b+" + 1/"+c+" + 1/"+d+" + 1/"+x+"\n";tn++;
							document.f2.t.value=t.join("");
							//break;
						}
					}
					if(ssd+(nn-4)/(d+1)<q)continue;
			        	e = Math.floor(1/(q-ssd))-1;
					sse=aa+bb+cc+dd+ee;
					if(e<=d)e=d;
					do
					{
						if(nn<6)break;
						e++;if(e>max)break;ee=1/e;
						if(sse+(nn-5)/(e+1)<q)break;
						D=(a*b*c*d*e*z0-n0*(a*(b*(c*(d+e)+d*e)+c*d*e)+b*c*d*e));
						x=a*b*c*d*e*n0/D;
						if((Math.abs(x-Math.floor(x))<0.00000000001)&&(x>e)&&(nn>5))
						{
							if(test6(z0,n0,a,b,c,d,e,x))
							{
								ti=(sort)?5:0;
								t[ti]+="1/"+a+" + 1/"+b+" + 1/"+c+" + 1/"+d+" + 1/"+e+" + 1/"+x+"\n";tn++;
								document.f2.t.value=t.join("");
								//break;
							}
						}
						if(sse+(nn-5)/(e+1)<q)continue;
			        		f = Math.floor(1/(q-sse))-1;
						ssf=aa+bb+cc+dd+ee+ff;
						if(f<=e)f=e;
						do
						{
							if(nn<7)break;
							f++;if(f>max)break;
							if(ssf+(nn-6)/(f+1)<q)break;
							D=(a*b*c*d*e*f*z0-n0*(a*(e*(d*(c*(b+f)+b*f)+b*c*f)+b*c*d*f)+b*c*d*e*f));
							x=a*b*c*d*e*f*n0/D;
							if((Math.abs(x-Math.floor(x))<0.00000000001)&&(x>f)&&(nn>6))
							{
								if(test7(z0,n0,a,b,c,d,e,f,x))
								{
									ti=(sort)?6:0;
									t[ti]+="1/"+a+" + 1/"+b+" + 1/"+c+" + 1/"+d+" + 1/"+e+" + 1/"+f+" + 1/"+x+"\n";tn++;
									document.f2.t.value=t.join("");
									//break;
								}
							}
			            	}while((ssf + (nn-6)/(f + 1) >= q)&&(f<max)&&(tn<maxanz));
		            	}while((sse +(nn-5)/(e + 1) >= q)&&(e<max)&&(tn<maxanz));
	            	}while((ssd + (nn-4)/(d + 1) >= q)&&(d<max)&&(tn<maxanz));
            	}while((ssc + (nn-3)/(c + 1) >= q)&&(c<max)&&(tn<maxanz));
		}while((aa + bb + (nn-2)/(b + 1) >= q)&&(b<max)&&(tn<maxanz));
	}while(tn<maxanz);
	status="";
	
	if(document.f2.t.value=="")document.f2.t.value="Keine Zerlegung mit höchstens "+nn+" Stammbrüchen gefunden";
	var TN=getZahlwort(tn);if(tn==0)TN="keine";if(tn==1)TN="eine";
	TN=TN.charAt(0).toUpperCase()+TN.substr(1,TN.length-1);
	status=TN=TN+" Darstellung"+((tn<=1)?"":"en")+" von "+z0+"/"+n0+" gefunden";
	document.f2.t.value=TN+((tn>0)?":":".")+"\n\n"+t.join("");
}

function run4(n)
{
	var nn=n*n;
	var p,q,t,s,a,b,i=0,tt=new Array();
	for(q=n-1;q>0;q--)
	{
		if((nn%q)!=0)continue;
            p=nn/q;
            t=(p-q)/2;
            r=t/2;
            k=Math.round((n+Math.sqrt(nn+t*t))/2);
            a=k-r;
            b=k+r;
		tt[tt.length]="1/"+a+" + 1/"+b;
		i++;
	}
	var TN=getZahlwort(i);if(i==0)TN="keine";if(i==1)TN="eine";
	TN+=" Darstellung"+((i<=1)?"":"en")+" von "+2+"/"+n+" als Summe zweier Stammbrüchen gefunden";
	document.f2.t.value=TN+((i>0)?":":".")+"\n\n"+tt.join("\n")+"\n\n(Die Beschränkungseinstellungen wurden nicht beachtet. Dies sind alle existenten \nDarstellungen mit zwei Stammbrüchen.)";
}
function runz3()
{
	var x,y;
	x=document.f2.z2.value=Math.floor(Math.random()*52+2);
	do{document.f2.n2.value=(y=Math.floor(Math.random()*102+2));}while(y<x);
	run3();
}
function run5(z,n)
{
	var nn=4*n*n;
	var p,q,t,s,a,b,i=0,tt=new Array();
	for(q=2*n-1;q>0;q--)
	{
		if((nn%q)!=0)continue;
            p=nn/q;
            s=(p+q)/2;
		t=(p-q)/2;
            r=t/z;if((r%1)!=0)continue;
            k=(2*n+Math.sqrt(nn+r*r*z*z))/(z*z);
            a=(k*z-r)/2;if((a%1)!=0)continue;
            b=(k*z+r)/2;if((b%1)!=0)continue;
		tt[tt.length]="1/"+a+" + 1/"+b;
		i++;
	}
	var TN=getZahlwort(i);if(i==0)TN="keine";if(i==1)TN="eine";
	TN+=" Darstellung"+((i<=1)?"":"en")+" von "+z+"/"+n+" als Summe zweier Stammbrüchen gefunden";
	document.f2.t.value=TN+((i>0)?":":".")+"\n\n"+tt.join("\n")+"\n\n(Die Beschränkungseinstellungen wurden nicht beachtet. Dies sind alle existenten \nDarstellungen mit zwei Stammbrüchen.)";
}

function sum(a,n)
{
	var i,s=1/a;
	for(i=1;i<n;i++)s+=1/(++a);
	return s;
}

function getBrStr(z,n,o,anz)
{
var tz="",tb="",tn="",bs="——————————————————————————————", mmL=3,nnL=0,zzL=0;
for(i=0;i<anz;i++)
{
	var zL=String(z[i]).length,nL=String(n[i]).length,
	mL=(nL>zL)?nL:zL;
	//alert((mL-nL)/2+"\n"+Math.round((mL-nL)/2)+"\n"+Math.floor((mL-nL)/2));
	var sZ=Math.floor((mmL-zzL)/2)+Math.round((mL-zL)/2);
	var sN=Math.floor((mmL-nnL)/2)+Math.round((mL-nL)/2);
	mmL=mL;nnL=nL;zzL=zL;//alert(sZ+"\n"+sN);
	if(nL!=0)tz+=sp(sZ)+z[i]+sp(4+((i<anz-1)?o[i].length:0));
	tn+=sp(sN)+n[i]+sp(4+((i<anz-1)?o[i].length:0));
	tb+=(nL==0)?z[i]:bs.substr(0,mL+2)+((i<anz-1)?" "+o[i]+" ":"");
}
	return "  "+tz+"\r\n  "+tb+"\r\n  "+tn ;
}

function sp(n){return "                           ".substr(0,n);}

function rb(x,tab)
{
	t=String(x);
	return "                                                ".substr(0,tab-t.length)+t;
}

function getggT(a,b){var c=1;a=Number(a);b=Number(b);if(a*b == 0) return 1;if((isNaN(a))||(isNaN(b)))return 1;
    if((a!=Math.floor(a))||(b!=Math.floor(b)))return 1;
while(c!=0){c=a%b;a=b;b=c;}return a;}

function test2(z0,n0,a,b)
{
	var z=a+b,n=a*b;
	var g=getggT(z,n);z/=g;n/=g;
	return ((z==z0)&&(n==n0));
}
function test3(z0,n0,a,b,c)
{
	var z=a*(b+c)+ b*c,n=a*b*c;
	var g=getggT(z,n);z/=g;n/=g;
	return ((z==z0)&&(n==n0));
}
function test4(z0,n0,a,b,c,d)
{
	var z=a*(b*(c+d)+c*d)+b*c*d,n=a*b*c*d;
	var g=getggT(z,n);z/=g;n/=g;
	return ((z==z0)&&(n==n0));
}
function test5(z0,n0,a,b,c,d,e)
{
	var z=a*(b*(c*(d+e)+d*e)+c*d*e)+b*c*d*e,n=a*b*c*d*e;
	var g=getggT(z,n);z/=g;n/=g;
	return ((z==z0)&&(n==n0));
}
function test6(z0,n0,a,b,c,d,e,f)
{	
	var z=a*(e*(d*(c*(b + f) + b*f) + b*c*f) + b*c*d*f) + b*c*d*e*f,n=a*b*c*d*e*f;
	var g=getggT(z,n);z/=g;n/=g;
	return ((z==z0)&&(n==n0));
}
function test7(z0,n0,a,b,c,d,e,f,g)
{	
	var z=a*(g*(f*(e*(d*(c + b) + b*c) + b*c*d) + b*c*d*e) + b*c*d*e*f) + b*c*d*e*f*g,n=a*b*c*d*e*f*g;
	var gg=getggT(z,n);z/=gg;n/=gg;
	return ((z==z0)&&(n==n0));
}
function demo()
{
	var n,z;
	run2();
	do{
		document.f2.n2.value=n=Math.floor(Math.random()*15+5);
		document.f2.z2.value=z=Math.floor(Math.random()*(n-3)+2);
		if((n%z)==0)document.f2.z2.value=z+1;
		run3();
	}while(document.f2.t.value.indexOf("Keine")>-1);
	status="";
}