// 给定一个整数 𝑛 和 𝑚 个不同的质数𝑝1,𝑝2,…,𝑝_𝑚。
// 请你求出 1∼𝑛 中能被 𝑝1,𝑝2,…,𝑝_𝑚 中的 至少一个数整除的整数 有多少个。
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const int N=20;
int n,m;//m是质数的个数
int p[N];
int main()
{
cin>>n>>m;
for(int i=0;i<m;i++)cin>>p[i];
int res=0;//结果
for(int i=1;i<1<<m;i++)//用二进制来便利所有集合
{
int t=1,cnt=0;//t代表乘积,用于求集合中的元素个数;cnt代表集合中的元素个数
for(int j=0;j<m;j++)
{
if(i>>j&1)//第j+1位是质数
{
cnt++;
if((LL)t*p[j]>n)//爆掉
{
t=-1;
break;//退出循环
}
t*=p[j];
}
}
if(t!=-1)
{
if(cnt%2)res+=n/t;//用质数个数判断符号是加是减
else res-=n/t;
}
}
cout<<res<<endl;
return 0;
}