快速求质因子(一定程度上,比辗转相除好得多)

借鉴自我的朋友,http://my.csdn.net/raalghul。而他的qq也是需要输入他qq号的质因子才能加他的,所以很有趣,我想他讨教了求质因子的方法,然后加了他,哈哈。


方法:

按正常方法找一个数的因子,用一个for循环,遍历到sqrt(num)前,一个个看能否除的通。

这里有点不一样,找到一个质因子后,num = num/i,减小了num的长度,直接加快了效率。为什么可以这么做,因为比如64,2的6次。如果你这样的话,会直接把64除成1,一次性把2的因子全部消除了。所以这样的目的就是一次性彻底消除一类因子,大大缩小num长度。只需要在循环完后判断num是不是因子即可,因为你执行的没有原来长了,所以num可能会被你漏掉。


代码:

private static List<Integer> getPrimeFactor(int num) {
    List<Integer> primeFactorList = new ArrayList<>();
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值