博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
经典算法详解(12)分解质因数
阅读量:4662 次
发布时间:2019-06-09

本文共 1073 字,大约阅读时间需要 3 分钟。

题目:众所周知,任何一个合数(因数不止是1和本身)都可以写成几个质数相乘的形式,这几个质数叫做这个合数的质因数。例如,24=2×2×2×3.把一个合数写成几个质数相乘的形式叫做分解质因数。对于一个质数,他的质因数可定义为它本身。编写一个程序实现分解质因数。

C++实现

1 #include
2 3 using namespace std; 4 5 int isPrime(int n) { 6 for (int i = 2; i < n; i++) { 7 if (n%i == 0) 8 return 0; 9 }10 return 1;11 }12 13 int getPrimeFactor(int n) { //可以不返回值,此处返回-1表示出错,返回1表示正常。14 if (n < 2)15 return -1;16 if (isPrime(n)) {17 cout << n << "\t";18 return 1;19 }20 else {21 for (int i = 2; i < n; i++) {22 if (n%i == 0) {23 cout << i << "\t";24 getPrimeFactor(n / i);25 break;26 }27 }28 }29 return 1;30 }31 32 int main(int argc, char *argv[]) {33 int a;34 cin >> a;35 getPrimeFactor(a);36 getchar();37 getchar();38 return 0;39 }

思路:首先编写一个函数用于判断一个数是否是质数,其次利用递归的方法,把一个数除以它最小的质因数的之后的值又是一个要质因数分解的值,问题相同规模缩小,所以是一个递归问题,终止条件是该数是一个质数。当是质数或者找到一个最小的质因数时都将其打印出来即可。

转载于:https://www.cnblogs.com/ys99/p/9322793.html

你可能感兴趣的文章
oracle, group by, having, where
查看>>
nodejs pm2使用
查看>>
CSS选择器总结
查看>>
sql语句的各种模糊查询语句
查看>>
移动端单屏解决方案
查看>>
web渗透测试基本步骤
查看>>
使用Struts2标签遍历集合
查看>>
angular.isUndefined()
查看>>
第一次软件工程作业(改进版)
查看>>
网络流24题-飞行员配对方案问题
查看>>
引入css的四种方式
查看>>
iOS开发UI篇—transframe属性(形变)
查看>>
LOJ 2537 「PKUWC2018」Minimax
查看>>
使用java中replaceAll方法替换字符串中的反斜杠
查看>>
流量调整和限流技术 【转载】
查看>>
1 线性空间
查看>>
VS不显示最近打开的项目
查看>>
DP(动态规划)
查看>>
chkconfig
查看>>
2.抽取代码(BaseActivity)
查看>>