使用递归完成质因数分解

每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数。分解质因数只针对合数。对于合数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 @ 2021-10-14 11:58  Hi,小董先生  阅读(366)  评论(0)    收藏  举报