分解質因數的程序


以下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;

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM