给你一个数N 再给你3个数a,b,c求1到N内即不能被a,b整除,也不能被c整除的数
1000 5 6 8 20 3 4 5
600 8
三个集合的容斥关系公式:A∪B∪C=A+B+C-A∩B-B∩C-C∩A+A∩B∩C
n/a+n/b+n/c-n/gkk(a,b)-n/gkk(b,c)-n/gkk(a,c)+n/gkk(gkk(a,b),c)
gkk(a,b)为最小公倍数
#include<stdio.h> int gcd(int x,int y){ if(!y) return x; else return gcd(y,x%y); } int gkk(int x,int y){ int kk=gcd(x,y); return x/kk*y; } int main() { int n,a,b,c,sum; while(~scanf("%d",&n)){ if(n==0) break; scanf("%d%d%d",&a,&b,&c); sum=n/a+n/b+n/c-n/gkk(a,b)-n/gkk(b,c)-n/gkk(a,c)+n/gkk(gkk(a,b),c); printf("%d\n",n-sum); } return 0; }