1~n多少个数不能被任意 ai 整除,n<= 1013 ,i<=100,保证 (ai,aj)互质,i≠j
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;++i)
const int maxn = 101000;
typedef long long int ll;
ll f[maxn][101];int a[101];
ll dp(ll i,int j){
if(i<maxn&&f[i][j]!=-1)return f[i][j];
if(j==0)return i;
ll t=dp(i,j-1)-dp(i/a[j],j-1);
if(i<maxn)f[i][j]=t;
return t;
}
ll n;int k;
int main(){
memset(f,-1,sizeof(f));
cin>>n>>k;
rep(i,1,k)cin>>a[i];
sort(a+1,a+k+1);
cout<<dp(n,k)<<endl;
return 0;
}