How many integers can you find
描述给你三个数,n,m1,m2,找出所有小于n的能被m1或m2整除的数的个数。
-
输入
-
输入包含多组测试数据,每组数据占一行。
0<n<2^31,0<m1,m2<=10。
输出
- 每组数据输出占一行。 样例输入
-
12 2 3
样例输出
-
7
直接暴力会超时
//A并B=A+B-A交B
#include<stdio.h>
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int lcm(int x,int y)
{
return (x*y)/gcd(x,y);
}
int main()
{
int n,m1,m2;
while(~scanf("%d%d%d",&n,&m1,&m2))
{
n--;
printf("%d\n",n/m1+n/m2-n/lcm(m1,m2));
}
return 0;
}