class CalculE{

    static void P(String s){
	System.out.print(s);
    }

    static int calculerN(double eps){
	double prod = eps;
	int N = 0;

	// 1/(N*N!) < eps <=> N*N!*eps > 1
	// prod contient N!*eps qu'on fait évoluer
	do{
	    N++;
	    /* mise à jour de prod */
	    prod *= N;
	} while(N*prod <= 1.);
	return N;
    }

    static void calculerE(double eps){
	double e;
	int N;

	N = calculerN(eps);
	e = 1/((double)N);
	P("N("+eps+")="+N+"\n");
	for(int n = N-1; n >= 1; n--)
	    e = (1+e)/n;
	e += 1;
	// on compare avec la constante de la classe Math
	P("e="+e+", |E-e|="+(Math.E-e)+"\n");
    }

    static public void main(String[] args){
	calculerE((double)Float.parseFloat(args[0]));
    }

}

