1~n中不是2,3,5,7倍数的个数
首先看到这个题目,因为没有看到输入的大小和时间要求,就用了直接就能想到的方法来做,也就是遍历1~n中的所有数,然后对每一个数都和2,3,5,7求余数,这种方法在n的大小比较小的情况下还是可以的,但是我一看输入的大小 1≤N≤1018 ,我瞬间就吓尿了,这是什么数量级啊,然后我就知道这个题目肯定不能用遍历来做了,然后我就没有办法啦,然后我百度了一下,又是新技能get。
首先比如要求N中2的倍数的个数,直接用 N2 就可以算出来了,比如10中2的倍数的的个数直接就可以算出来是5,可以说是非常神奇了,长这么大我还是第一见过这种操作。然后,求N中不是2,3,5,7倍数的个数,可以先算出是2,3,5,7倍数的个数,然后用N减掉就可以了,重点是,求2,3,5,7倍数的时候不能直接将 N