一、定义:如果一个数m,它的约数个数大于任何一个比m小的自然数的约数个数,那么称这种数为Antiprime数。譬如:1、2、4、6、12和24。
二、定理 设m=2^t1×3^t2 ×……×p^tk(其中p是第k大的素数)是Antiprime数,则必有t1≥t2≥t3≥……≥tk≥0。
用反证法证。(略)
三、分析
1、由于n可以达到2*10^9,所以用枚举法会超出时间复杂度。
2、当n=2*10^9时,Antiprime数仅有1456个。所以可以把所有此类的数搜索并存储下来,同时记录下每个数的约数个数。把它们从小到大排序后,再逐一判断哪些是Antiprime数,取最大值即可。如n=15,则满足条件的数是1、2、4、6、和12,其约数个数分别是1、2、3、4、4和6,所以不大于15的Antiprime数有1、2、4、6、12,其中最大值是12。
4、因为2^31接近2*10^9,所2的指数从31、30……往下搜。用回溯法。