当前位置: 首页 > article >正文

C++ 递归函数之分解质因子

【问题描述】 输入一个正整数 n,用递归方法从小到大输出它的所有质因子(因子是质数)。

【输入格式】 一行一个正整数 n,2≤n≤10000。

【输出格式】 一行若干个正整数,两数之间用一个空格隔开,从小到大输出。

【输入样例】 18 【输出样例】 2 3 3

【问题分析】 显然,如果 n 等于 1,就没法再分解了。如果 n 大于 1,从整数 p(p 从 2 开始)开始试除,如果能被 p 整除,就得到一个质因子 p。问题就转化成对于整数 n/p,从 p 开始继续分解质因子。 如果不能被 p 整除,问题就转化为对于整数 n,从 p+1 开始分解质因子。所以,递归公式为:

#include<iostream>
using namespace std;
bool first = true;
void zyz(int n,int p){
    if(n > 1){
        if(n % p == 0){
            if(first){  // 是否是第一个因子
                cout << p;  // 输出第一个因子
                first = false;
            }
            else cout <<  " " << p;  // 输出不是第一个的因子
            zyz(n/p,p);
        }
        else zyz(n,p+1);
    }
}
int main(){
     int n;
     cin >> n;
     zyz(n,2);
     cout << endl;
     return 0;
}


http://www.kler.cn/news/355619.html

相关文章:

  • Neuromnia是一家创新的AI平台用Llama为自闭症护理领域带来全新解决方案
  • 机器学习—基于随机森林的贷款可能性预测系统实现
  • 将 Ubuntu 系统中的 **swap** 空间从 2GB 扩展到 16GB
  • linux搭建elasticsearch
  • 分布式环境下验证码登录的技术实现
  • 2021-04-14 proteus中仿真时74HC245三态双向端口扩展输出
  • Java集合(3:Set和Map)
  • 拯救大兵瑞恩——状态压缩 + 复合BFS + 动态规划 + 坐标压缩
  • VulnHub-DC-1靶机
  • docker 资源限制+调优详解
  • Golang 并发编程:通道(Channel)的详细用法
  • Java | Leetcode Java题解之第493题翻转对
  • Midjourney中文版:开启AI绘画新时代
  • 基于SSM出租车管理系统的设计
  • nodejs 实现linux 磁盘挂载 磁盘健康检测(smartmontools) 系统内存cpu性能监控
  • windows C++-有效使用PPL(三)
  • 力扣 简单 141.环形链表
  • Miniconda管理虚拟环境【Python环境配置】
  • 【JS、数组】flat的基本用法
  • 开源vGPU方案 HAMi实现细粒度GPU切分——筑梦之路