分解质因数的程序

以下prim函数的功能是分解质因数。括号内的内容应该为?
1
2
3
4
5
6
7
8
9
10
void prim(int m, int n)
 {
     if (m >= n)
     {
         while (        ) n++;
         (     );
         prim(m, n);
         cout << n << endl;
     }
 }
n从2开始
第一处为m%n,代表取余。当余数是0的时候表示除尽,跳出while循环,即找出一个质因数。此时一个质因数即为n
然后 m/=n 即让m除去这个质因数,然后再进入求新m质因数的递归。
 
 
举例:m=6,n=2
 
m>n;
m%n=0,跳出while,n没有加1。此时m=6,n=2
m/=n,此时m=3,n=2   (2为一个质因数)
    递归prim(m, n),即prim(3, 2);
     m>n; 
    m%n=1,n++,此时m=3,n=3,继续while循环
    m%n=0,跳出while循环,此时 m=3,n=3  (3为另一个质因数)
    m/=n,此时m=1,n=3
        递归 prim(m, n),即 prim(1, 3);
       不满足条件(m > n),返回上层
   输出质因数 n=3
输出质因数 n = 2  
 
    一个实际分解质因数的C语言程序

#include "stdafx.h"

#include <iostream>

using namespace std;

int main()

{

int n;

printf("请输入一个大于0的整数:");

cin >> n;

printf("分解结果:");

for (int i =2; i <= n; i++)

{

while (n>=i)

{

if(n%i==0)

{

if (n == i)

{

printf("%d", i);

n = n / i;

}

else

{

printf("%d*", i);

n = n / i;

}

}

else

{

break;

}

}

}

return 0;

}

原文地址:https://www.cnblogs.com/fenglongyu/p/7625657.html