1. 程式人生 > >分解質因數的程序

分解質因數的程序

std tab line class cin order add plain lpad

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

}

分解質因數的程序