#include<cstdio>
#include<vector>

#define rep(i,n) for(int i=0;i<(n);i++)

using namespace std;

typedef long long ll;

const int P_MAX=100000;
vector<int> P;
void sieve(){
	static bool er[P_MAX+1];
	rep(i,P_MAX+1) er[i]=(i>=2);
	for(int i=2;i*i<=P_MAX;i++) if(er[i]) for(int j=i*i;j<=P_MAX;j+=i) er[j]=false;
	rep(i,P_MAX+1) if(er[i]) P.push_back(i);
}

vector< pair<double,ll> > sa; // <テ渉?n)/n, n>
void dfs(int i,long double a,int e,ll sigma){
	sa.push_back(make_pair(sigma/a,a));
	ll sigma2=sigma;
	for(int j=1;j<=e;j++){
		if(a>1e15) return;
		a*=P[i];
		sigma2=P[i]*sigma2+sigma;
		dfs(i+1,a,j,sigma2);
	}
}

int main(){
	sieve();

	dfs(0,1,77,1);

	for(ll n;scanf("%lld",&n),n;){
		double ans=1;
		rep(i,sa.size()) if(sa[i].second<=n && sa[i].first>ans) ans=sa[i].first;
		printf("%.9f\n",ans);
	}

	return 0;
}