输入一个正整数n,输入(1,n)上不含8且能被15或17整除的整数个数。
时间: 2024-05-19 13:12:06 浏览: 69
整除15问题算法 整除某个数的算法
我们可以使用排除法来解决这个问题。
首先,从1到n的整数中,能被15整除的数的个数为 $\lfloor \frac{n}{15} \rfloor$,能被17整除的数的个数为 $\lfloor \frac{n}{17} \rfloor$。
然后,我们需要排除掉1到n中所有含有数字8的整数。对于一个$k$位数,其中每一位都可以填$0$到$9$这10个数字中的任意一个,所以该数中含有数字8的方案数为$9^k$。因此,1到$n$中含有数字8的$k$位数的个数为:$$A_k = 9^k - 8^k$$
最后,我们需要排除掉1到n中既含有数字8,又不能被15或17整除的整数。这样的数可以分为两类:能被15整除但不能被17整除的数,和能被17整除但不能被15整除的数。设它们的个数分别为$B$和$C$。
由于15和17互质,所以在1到n的范围内,能同时被15和17整除的数的个数为$LCM(15, 17) = 255$。因此,$B$和$C$分别为$\lfloor \frac{n}{15} \rfloor - \lfloor \frac{n}{255} \rfloor$和$\lfloor \frac{n}{17} \rfloor - \lfloor \frac{n}{255} \rfloor$。
综上所述,1到n中不含8且能被15或17整除的整数的个数为:$$\lfloor \frac{n}{15} \rfloor + \lfloor \frac{n}{17} \rfloor - \lfloor \frac{n}{255} \rfloor - A_1 - A_2 - \cdots - A_{\lfloor \log_{10} n \rfloor} + B + C$$其中,$A_1$到$A_{\lfloor \log_{10} n \rfloor}$分别表示$n$中含有1位、2位、$\cdots$、$\lfloor \log_{10} n \rfloor$位数字8的数的个数。
阅读全文