分解質因數

2021-07-13 11:33:17 字數 1218 閱讀 4252

素數,有無限個。除了1和它本身以外不再有其他的除數

整除(例如31);合數,數學用語,英文名為composite number,指自然數中除了能被1和本身整除外,還能被其他數(0除外)

整除的數(如12=2*2*3)

**如下:

/*分解質因數

*//*第1版

*/ #include

#include

#define n

100

inti = 0;

void

digui(

intc ,

int* p)

if( c == j)

else }

intmain()

intsum = 0;

for(int

k =

0; k< i; k++)

sum += *(p+k); if

(0== sum)

printf(

" %d

是質數\n"

,flag );

else

printf(

"\n");

} return0;

}改正版:第1版沒有區分合數和質數,合數和質數都呼叫digui 這個函式,依據digui函式的特點:儲存每乙個滿足條件:c%j =0的j值,直至j為乙個質素時,儲存這個質數為止,即遞迴結束,所以是質數作為引數時,空間也會儲存乙個數(即這個質數本身),在列印時也會列印,這和實際不符(實際情況:輸出xx是質素),此題修改處;增加區分質數和合數的函式,當是質數時,不執行digui這個函式,只有是合數時才執行digui這個函式,這樣的話,能真正達到要求,

/*分解質因數*//*第2版(完整版)*/

#include

#include

#define n 100

int i = 0;

int iscompositenumber(int n)//---判斷是否是合數(質數即素數)

void digui(int c ,int * p)

if( c == j)

else

} int main()

else

printf("%d=",a);

for(int j = 0;j < i ; j++)

printf("\n"); }

free(p);//動態記憶體分配完,記得釋放

return 0; }

分解質因數

質因數概念 每個合數都可以寫成幾個質數相乘的形式,這幾個質數就都叫做這個合數的質因數。如果乙個質數是某個數的因數,那麼就說這個質數是這個數的質因數。而這個因數一定是乙個質數。演算法原理 先根據需要分解的合數生成乙個質數表。然後依次從小到大依次除合數,每次除之後都將儲存步驟。表達不好,還是看 吧 us...

分解質因數

分解質因數 問題描述 求出區間 a,b 中所有整數的質因數分解。輸入格式 輸入兩個整數a,b。輸出格式 每行輸出乙個數的分解,形如k a1 a2 a3.a1 a2 a3.k也是從小到大的 具體可看樣例 樣例輸入 3 10 樣例輸出 3 34 2 2 5 56 2 3 7 78 2 2 2 9 3 3...

分解質因數

大數的質因數分解一直以來是亟需解決的難題。本文從最基本的試除法開始,分解質因數的方法。下面的程式在開頭定義了乙個巨集opt,如果刪掉這個定義,就可以執行最原始的演算法。一 樸素演算法 include include include using namespace std define opt int...