分解質因數的程序
阿新 • • 發佈:2017-10-04
std tab line class cin order add plain lpad 以下prim函數的功能是分解質因數。括號內的內容應該為?
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語言程序
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;
}
}
|
#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;
}
分解質因數的程序