问1~n内有多少数能被2~4中任意一个数整除。
容斥原理。那么问题可以简化成四个数的容斥,即2 3 5 7,(忽略倍数的情况)。那么有公式a+b+c+d-ab-ac-ad-bc-bd-cd+abc+abd+acd+bcd-abcd
#include<map>
#include<queue>
#include<cmath>
#include<iostream>
#include<cstdio>
#include<stack>
#include<cstring>
#include<algorithm>
#include<string>
#define inf 0x3f3f3f3f
#define eps 1e-5
#define LL long long
using namespace std;
const double PI=acos(-1.0);
int main(){
LL n,m,i,j,k;
while(~scanf("%lld",&n)){
k=n/2+n/3+n/5+n/7-n/6-n/10-n/14-n/15-n/21-n/35+n/30+n/42+n/105+n/70-n/210;
printf("%lld\n",n-k);
}
return 0;
}