• 算法笔记(c++)--求一个数的所有质数因子


                算法笔记(c++)--求一个数的所有质数因子


    先贴题目:

      

      

    这题不难,恶心在理解上面。最后看评论知道了怎么回事:

      2*2*3*3*5=180

    按照这逻辑的话应该输入的数由一系列质数相乘出来,所以每次找到一个质数就要更新下输入数.。

    问题1:

    没问题的话一瞬间都是这么想的。更新后重新来一遍for。重新探索一遍质数。但是仔细想想,题目要求从小到大,能2*3*2就一定能2*2*3,不如每次找到一个质数因子的时候,循环更新输入数。

    解决如下

    while(num%质数因子==0)

      num=num/质数因子.

    问题2:

    比如10我们计算用for( 2 to sqrt num)过程就是这样 2-num=5.    5无法再没有(2, sqrt(num)】内的质数因子了.就直接退出了。

    所以我们最后判断假如num最后大于1--如果1的话说明已经结束了

    大于1就把num再次输出.

    按照我们的逻辑来随便看个数字比如99

    首先3-num=33

    然后3-num=11

    然后11-num=1

    =>3 3 11没毛病

  • 相关阅读:
    微信小程序-----校园头条详细开发之注册登录
    微信小程序-----校园头条详细开发之首页
    day 99天
    day 98天
    day 97 VUE第一天
    day 96
    day 95天
    day 94 RestFramework序列化组件与视图view
    day 93 Restframwork
    day 92
  • 原文地址:https://www.cnblogs.com/DJC-BLOG/p/9403954.html
Copyright © 2020-2023  润新知