#include <bits/stdc++.h>
using namespace std;

typedef long long LL;
const int MAXN=1E5+10;
LL id[2000],f[2000];
int fp[2000],fcnt,cnt;
LL p[110000],pc=0;
map<LL,int> mp;
double ans[2000],dp[2000][35];
LL m,fm;
int n,tot,idp;

bool prime(LL n){
	if ((n!=2 && !(n%2)) || (n!=3 && !(n%3)) || (n!=5 && !(n%5))) return false;
	for (int i=0; (LL)p[i]*p[i]<=n; i++){
		if (!(n%p[i])) return false;
	}
	return n>1;
}

void dfs(int t,LL k)
{
	if (t>=fcnt){
		id[cnt++]=k;
		return;
	}
	dfs(t+1,k);
	for (int i=1;i<=fp[t];i++){
		k*=f[t];
		dfs(t+1,k);
	}
}

int main()
{
	p[pc++]=2;
	for (int i=3;i<110000;i+=2){
		if (prime(i)) p[pc++]=i;
	}
	scanf("%d",&n);
	for (int i=0;i<n;i++){
		scanf("%lld",&m);
		fm=m;
		cnt=0;
		fcnt=0;
		for (int i=0;LL(p[i])*p[i]<=m;i++)
		if (m%p[i]==0){
			f[fcnt]=p[i];
			fp[fcnt]=0;
			while(m%p[i]==0)
			{
				m/=p[i];
				fp[fcnt]++;
			}
			fcnt++;
		}
		if (m!=0) f[fcnt]=m,fp[fcnt++]=1;
//		for (int i=0;i<fcnt;i++)
//			printf("fp::%lld %d\n",f[i],fp[i]);
		dfs(0,1);
		sort(id,id+cnt);
		cnt=unique(id,id+cnt)-id;
//		cout << cnt << endl;
//		for (int i=0;i<cnt;i++) printf("%lld ",id[i]);puts("");
		mp.clear();
		for (int i=0;i<cnt;i++)	mp[id[i]]=i;
		for (int i=0;i<cnt;i++)
		{
			ans[i]=0;
			LL u=id[i];
			if (u==1||prime(u)){
				for (int j=0;j<35;j++) dp[i][j]=1;
				ans[i]=0;
			}
			else{
				for (int j=0;j<35;j++) dp[i][j]=0;
				tot=0;
				for (int k=1;k<i;k++)
				if (u%id[k]==0) tot++;
//				cout << "u = " << u << " tot = " << tot << endl;
				for (int k=1;k<i;k++)
				if (u%id[k]==0){
					idp=mp[u/id[k]];
					for (int j=1;j<35;j++)
						dp[i][j]+=dp[k][j-1]*dp[idp][j-1]/tot;
				}
				ans[i]=0;
//				for (int j=0;j<35;j++) printf("%lf ",dp[i][j]);puts("");
				for (int j=1;j<35;j++) ans[i]+=(dp[i][j]-dp[i][j-1])*j;
			}
		}
//		for (int i=0;i<cnt;i++) printf("%lf ",ans[i]);puts("");
		printf("%.7lf\n",ans[mp[fm]]);
	}
}
