BZOJ-1053-反素数ant

描述

对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。
如果某个正整数x满足:g(x)>g(i) 0 < i < x,则称x为反质数。例如,整数1,2,4,6等都是反质数。
现在给定一个数N,你能求出不超过N的最大的反质数么?


分析

  • 一个数约数个数=所有素因子的次数+1的乘积

  • 一个2000000000以内的数字不会有超过12个素因子

  • 较小的数的指数一定大于等于较大的数的指数

  • 准备工作: 预处理出前12个素数.

  • 然后就可以暴搜了, 将递归层数设定为第 dep 个素数. 枚举该素数选择多少个, 下一层的素数一定不会超过这个值.

  • 当dep == 12时更新答案并返回. 如果当前数大于当前答案并且因数个数多于答案, 更新答案; 如果当前数小于答案但是因数个数多于答案, 那么也要更新, 因为原有答案不再合法.


代码

https://code.csdn.net/snippets/616418

posted @ 2015-03-10 22:55  wfwbz  阅读(136)  评论(0编辑  收藏  举报