你这么做能也能做出来,但是太复杂了,一不小心就算多或者算少,不断的剔除3的次方数,大脑容易宕机。
-----------------------
我们可以这样思考,12=2*2*3,2、3是12的质因数。
因此只要求出N里面可以含有多少个为2的因子和多少个为3的因子,这样就可以构建多个2*2*3。
然后将因子2的数量减半,其结果与因子3的数量比较一下,哪个数量小就是哪个。
现在我们来观察3,
假设这个数列为1、2、3、……、n,
发现每隔3个数就能分出一个因子3,比如1——30,我们看到1-3、4-6、5-9、……这么一小段一小段的。总共有n/3=m小段。
然后我们把1-3、4-6、5-9、……这么一小段一小段的,每一小段看成一个整体数,设为a1、a2、a3、……,发现a1、a2、a3、……,也是每隔3个数又产生了一个因子3,比如a3=9、a6=18、a9=27、……。总共有m/3=k小段。
同理我们再次把a1-a3、a4-a6、a5-a9、……这么一小段一小段的,每一小段看成一个整体数,形成新的数列b1、b2、b3、……。总共有k/3=z小段。
一层一层下去,直到形成的数列含有的数小于3个为止,就不能再分段了。
你会发现数列0——n中,所含的因子3的个数不就是:
n/3=m (余数省略)
+m/3=k
+k/3=z
……
因子3的总数量就是m+k+z+……。
【 在 Leisi 的大作中提到: 】
: 我算的918次,还是笨办法。
: 12 = 3*2*2, 检查 301~2022之间,能写成 C* 3 的n次方的数字的数目
: 450 个 3x, 能被12 除 1次
: ...................
--
修改:weiminglake FROM 202.108.199.*
FROM 202.108.199.*