#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;

typedef long long lli;
int N, M;
int P[20];

lli gcd(lli a, lli b) { return b == 0 ? a : gcd(b, a%b); }
lli lcm(lli a, lli b) { return a*b/gcd(a,b); }

double solve() {
  lli A = 0;
  lli nA = 0;
  lli U = (lli)N*(N+1)/2LL;
  lli nU = N;
  for(int s = 1; s < (1<<M); ++s) {
    lli t = 1;
    lli d = -1;
    for(int i = 0; i < M; ++i) {
      if(s & (1<<i)) {
	t = lcm(t, P[i]);
	d *= -1;
      }
    }
    lli tn = N/t;
    nA += d*tn;
    lli ts = (lli)tn*(tn+1)/2LL;
    A += d*ts*t;
  }
  if(nU == nA) return 0;
  return (double)(U-A)/(nU-nA);
}

int main() {
  while(cin >> N >> M && (N || M)) {
    for(int i = 0; i < M; ++i) cin >> P[i];
    printf("%.10f\n", solve());
  }
  return 0;
}