一、解法1
硬推公式:得到公式为n - (n / 5 + n / 6 + n / 8 - n / 30 - n / 40 - n / 24 + n /120)
代码实现:
1 #include
2 #include
3 #include
4 #include
5 #include <string>
6 #include
二、借助韦恩图观察
三个圈代表5 和 6 和 8的倍数的数
首先我们求是5的倍数就是n/5
然后就是6的倍数就是n/6
然后就是8的倍数就是n/8
我们会发现多加了重复的部分(彩色部分)
也就是5和6的中间,5和8的中间,6和8的中间
然后就是减去n/30(30是5和6的最小公倍数)
然后就是减去n/24 (24是6和8的最小公倍数)
然后就是减去n/40(40就是5和8的最小公倍数)
我们发现会多减了5 和 6 和 8中间的一部分(蓝色部分)
那我们就要加回来就是n/(120)(120是5和6和8的最小公倍数)
代码实现如上