问1-n 中多少个数不能被2-10中所有数整除
题解;
需要用到容斥原理,但是要转化一下,把含有公因子的元素处理后,就成了求1-n 中不能被2 3 5 7整除的数的个数了
#include<stdio.h>
#include<string.h>
using namespace std;
typedef long long ll;
int main()
{
ll n;
while(~scanf("%lld",&n))
{
ll ans=n-n/2-n/3-n/5-n/7;//一项
ans=ans+n/6+n/10+n/14+n/15+n/21+n/35;//两项
ans=ans-n/30-n/42-n/70-n/105;//三项
ans=ans+n/210;//四项
printf("%I64d\n",ans);
}
return 0;
}