【问题描述】
给定某个正整数 N,求其素因子分解结果

输入格式:

输入long int范围内的正整数 N。

输出格式:

按给定格式输出N的素因式分解表达式,即 N=p1k1*p2k2*…*pm^km,其中pi为素因子并要求由小到大输出,指数ki为pi的个数;当ki为1即因子pi只有一个时不输出ki。

输入样例:

1323
输出样例:

1323=3^3 * 7^2

【思路】
本题你当然可以用循环暴力去求解,但我不喜欢那样,我觉得从递归的角度思考这一题更加有趣。正如我说的,做递归题关键在于分析它的子问题,每一个递归问题的求解都是建立在子问题被解决的基础之上的,这是核心思想!通过这一题的训练,可以很好的锻炼我们寻找子问题的能力。

题目要求对一个数n进行素因子分解,好,那我就依照题意,设 f( n ) 就表示输出正整数n的素因子分解情况。那么如何分析子问题呢?我们以1323为例,如果你已经会打印49(7 ^ 2)的素因子分解式,那么我们只需要在打印49的分解式之前打印3 ^ 3, 分解1323的任务实际上就完成了!
所以递归式大概就是:f(n) = 打印a^b + f(n / a ^ b) (a是正整数n可以分解出的一个质因数,b是该质因数的幂),a和b也是很好求的。

分析可能看起来有点啰嗦,直接上AC代码:

#include<iostream>
using namespace std;
#define ll long longll d;void f(ll n)
{   ll i = 0;ll a = 0;            //底数 ll p = 0;         //幂 for(i = 2;i * i <= d;i++)    //从小到大枚举,找出一个可分解的质因数{while(n % i == 0) //算该质因数幂的过程{a = i;p++;n /= i;}if(p != 0)           //一旦找到就跳出break;}if(p != 0){if(n != 1)         //边界在后面 , n == 1 就不继续调用了 {if(p != 1)cout << a << "^" << p << "*";elsecout << a << "*";f(n);         //n已经自我除掉了一部分,递归打印剩余部分就可以    }else               //n == 1{if(p != 1)cout << a << "^" << p;        //直接输出就行了elsecout << a;}              } else      //如果找不到质因数来分解,直接输出自己 {cout << n;}
}int main()
{ll n;cin >> n;cout << n << "=";d = n;f(n);return 0;
}

运行结果:

递归训练:素因子分解(分析子问题)相关推荐

  1. 【编译原理笔记09】语法制导翻译:语法制导翻译方案,在非递归的预测分析过程中进行翻译

    本次笔记内容: 5-5 语法制导翻译方案 5-6 在非递归的预测分析过程中进行翻译 本节课幻灯片,见于我的 GitHub 仓库:第9讲 语法制导翻译_2 文章目录 语法制导翻译方案 语法制导翻译方案 ...

  2. c语言折半查找递归程序,C语言数据结构中二分查找递归非递归实现并分析

    C语言数据结构中二分查找递归非递归实现并分析 前言: 二分查找在有序数列的查找过程中算法复杂度低,并且效率很高.因此较为受我们追捧.其实二分查找算法,是一个很经典的算法.但是呢,又容易写错.因为总是考 ...

  3. 【编译原理笔记05】语法分析:FIRST集和FOLLOW集的计算,[非]递归的预测分析法,预测分析中的错误处理

    本次笔记内容: 4-4 FIRST集和FOLLOW集 4-5 递归的预测分析法 4-6 非递归的预测分析法 4-7 预测分析法中的错误处理 本节课幻灯片,见于我的 GitHub 仓库:第5讲 语法分析 ...

  4. 对抗训练理论分析:自适应步长快速对抗训练

    ©PaperWeekly 原创 · 作者 | 鬼谷子 引言 该论文是关于对抗训练理论分析性的文章,目前对抗训练及其变体已被证明是抵御对抗攻击的最有效防御手段,但对抗训练的过程极其缓慢使其难以扩展到像 ...

  5. 汉诺塔递归问题的分析与Python实现

    背景 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏.该游戏是在一块铜板装置上,有三根杆(编号A.B.C),在A杆自下而上.由大到小按顺序放置64个金盘(如图).游戏的目标:把A杆上的金盘 ...

  6. 训练图像识别神经网络,神经网络训练结果分析

    哪些神经网络可以用在图像特征提取上 BP神经网络.离散Hopfield网络.LVQ神经网络等等都可以. 1.BP(BackPropagation)神经网络是1986年由Rumelhart和McCell ...

  7. java 递归原理_Java中递归原理实例分析

    本文实例分析了Java中递归原理.分享给大家供大家参考.具体分析如下: 解释:程序调用自身的编程技巧叫做递归. 程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中 ...

  8. lstm训练情感分析的优点_LSTM对电影评论进行简单的情感分析

    今天自己尝试使用LSTM对电影评论进行简单的情感分析 代码中npy文件: 代码使用的数据集是IMDB,网盘地址: 首先读取已经做好的词向量模型 import numpy as np # 这里有两个表, ...

  9. java递归获取所有的子级节点

    public class VltavaWisdomMapType {     //站点id     private String id;       //子级集合   private List< ...

最新文章

  1. 2019牛客暑期多校训练营(第三场)
  2. 从VR到元宇宙:回顾30年,改变虚拟现实的18件大事
  3. 笔记,Vector类模板的基本功能
  4. 【C++深度剖析教程38】类模板深度剖析
  5. 嘘!你与谷歌语音助手的对话,可能已经泄露……
  6. 神调侃!程序员必学推荐系统,我比女朋友更了解你!
  7. 论文记载:A Survey on Traffic Signal Control Methods
  8. linux 怎么查内存大小,linux如何查内存大小
  9. presenting view controller
  10. shiro的anon失效问题
  11. Bsnet:Bi-Similarity Network for Few-shot Fine-grained Image Classification论文复现
  12. Nuxt在SPA模式下的鉴权处理(1)
  13. JEECG容器化部署:Alpine镜像方式
  14. 0503《软件工程》的简单小总结与展望
  15. C51模拟PS2键盘(一)
  16. lqc_使用SNAT、DNAT策略实现网关应用
  17. python中time模块中的倒计时_python中的计时器timeit的使用方法
  18. 【CUDA编程笔记】(2)CPU与GPU之间的参数传递
  19. 公交车到站预测2----数据后处理
  20. 最新NVIDIA Ada Lovelace架构 和 RTX 40系列详解

热门文章

  1. 前端面试知识点整理——项目整理
  2. 动态规划之背包类问题详细介绍(代码模板)和例题练习
  3. 深度理解Jquery 中 scrollTop() 方法
  4. 大数据技术与实践学习笔记(1 of 3,from hitwh)
  5. FFmpeg 从零开始开发简单的音视频播放器(一)
  6. ofstream和ifstream详细用法
  7. 「自控原理」4.1 根轨迹及其绘制
  8. java中接口降低耦合性_如何降低一个程序的耦合性
  9. halcon边缘检测
  10. 520礼物送女生什么好一些?2022年精选礼物合集