使用递归完成质因数分解

每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数。分解质因数只针对合数。对于合数21,可以分解为3*7,输入合数n(0<=n<=1000),输出对应的质因数分解式.

 

代码示例:

#include<iostream>
using namespace std;
int a[1000];
int index=0;

bool prime(int y) {
  bool flag = true;
  for (int i=2; i*i<=y; i++) {
    if (y%i==0) {
      flag = false;
      break;
    }
  }
  return flag;
}

void prime_factor(int x) {
  if (prime(x)) {
    a[index++]=x;
    return;
  }

  for (int i=2; i<=x; i++) {
    if (prime(i) && x%i==0) {
      a[index++] = i;
      prime_factor(x/i);
      break;
    }
  }
}

int main(){
  int n;
  cin >> n;
  prime_factor(n);
  cout << n << '=' << a[0];
  for (int i=1; i<index; i++) {
    cout << '*' << a[i];
  }
  return 0;
}

posted @   Hi,小董先生  阅读(354)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示