分解質因數的程式設計分解,C語言分解質因數

時間 2023-01-17 10:40:10

1樓:高金山

if(m%k!=0),說明還沒找到因數,每次都是從2開始,逐漸遞增,來找因數的。

else,else部分,說明已經找到了因數,找到因數以後,先把因數列印出來,然後讓m等於被除後的數,讓k=2,也就是從2開始,繼續遞增找其他的因數啊。

舉個例子,你就明白了,比如15,你要對它進行分解質因數,該怎麼做呢。

先讓k=2,發現15%2!=0了,說明2不是它的因數,讓k++

k=3的時候,發現15%3==0了,說明3是它的一個因數,列印出3,讓m=15/3=5,讓k=2

5%2!=0,5%3!=0,5%4!=0,說明2,3,4,都不是5的因數,k繼續自加。

k=5,5%5==0了,說明5是5的因數,所以,列印5,m=5/5=1,k=2,這時,就會退出for迴圈了。

逐行分析,見下面:

if(m%k!=0) /m不能被k整除,說明k不是m的因數。

else //m不能被k整除,說明k是m的一個因數。

2樓:九天之鳳舞

if(m%k!=0)

這句話的意思就是說當k不是m的約數時,繼續找下一個k(即比k多1的數),判斷它是否是m的約數,是則輸出不是則繼續判斷下一個。

k=2; /讓k重新等於2

這個的意思是一個數如果找到了一個約數(比如2), 那麼找下一個約數之前仍然應該從2開始找,因為他可能仍有2這個質因子,比如24=2*2*2*3,第一次找到2,第二次仍然要從2開始判斷它是不是24的約數。

有不明白的地方再提出來吧~

3樓:逃離

if(m%k!=0)

m=m/k; /這個程式應該是版。

要輸出權,一個數包含哪幾個因子,所以要判斷除最小質因子後,那個數還有幾個因子。

k=2; /讓k重新等於2

} }printf("%d",k); 最後是輸出小於m=m/k 後k的值 例如12=2*2*3 那個3 因為那時的m=3 k=3 不滿足k

4樓:

有這樣幾個問題:

宣告的二維陣列是aaa,但**中應用時又變成了a,會產生a未定義專錯誤。

int aaa[3][100000];陣列太大,建議使用全域性屬變數或動態陣列;改成int a[3][1000];更好。

a[3][z]=a[1][j];這裡和jj=a[3][z]*1;這裡陣列a都越界了。宣告的a第一維是3,即0、1、2,不可能有[3]。

把這些錯誤改了再說。

5樓:匿名使用者

#include

#include

#include

int main()

;scanf("%d",&n);

if(n<=1) exit(0);

else if(n==2)else

return 0;

}這個是算bai比較小du的數 大概思路就zhi是先篩選dao出質數專。

集在遞迴從小屬到大除。

6樓:匿名使用者

這輸出結果連x都沒有也能成最佳?

7樓:星月小木木

實現bai方du法zhi如dao下內:容。

#include

void main( )

else i++;

8樓:匿名使用者

if((n%i==0)&&i!=n))

這個來地方,i作為n的因數不一定只源出現一次所以bai

應該用duwhile迴圈,讓n=n/i直到無法除盡,zhi否則可能影響後面的因子。

if((n%i==0)&&i!dao=n))

9樓:冰封莊子

分解質因數,就是來。

將一個合數自分解成幾個質數的乘積bai。

比如20=2*2*5

求質因數就du是從2開始除zhi,這就是這個算dao法的原理比如輸入20

能被2整除,輸出20的第一個質因數2

此時m=10 ,k=2 //接著就是求10的質因數。。。

10能被2整除,輸出20的第2個質因數2

此時m=5,k=2 //接著求5的質因數。。。

5是質數,不能被除1和他本身外的數整除,k就從2加到5。。。

後輸出20的最後一個質因數5

10樓:匿名使用者

你寫bai的du太zhi復dao雜專了屬。

#include

void main( )

else i++;

用c語言編寫一個分解質因數的程式

c++ 分解質因數

11樓:徐志偉

分解質因數程式設計:

#include

using namespace std;

main()

while(n%i==0)

//分解到 n不再是i的倍數是為止。

}system("pause");

12樓:匿名使用者

這個,可以正確執行的。

#include

#include

using namespace std;

int main()

else//system("pause");

return 0;}

13樓:匿名使用者

2023年noip第一題?

#include

#include

using namespace std;

int main(void)

return 0;

}btw,iostream效率太低,應該直接用c的i/o函式。

c語言將一個正整數分解質因數,望高手幫我詳細解釋一下程式?

14樓:4終

1、首先開啟, 新建一個vc專案,新增標頭檔案。

2、新增main主函式,如下圖所示。

3、然後定義 n, i 兩個變數,如下圖所示。

4、接著使用scanf給n賦值,使用for迴圈。

5、然後用while作為內層迴圈,使用printf列印i。

6、最後使用if條件語句,執行程式,如下圖所示,正整數分解為質因子就完成了。

15樓:力恬然

什麼地方你沒有看懂啊。

分解質因數的方法

16樓:匿名使用者

1、相乘法。

2、短除法。

每個合數都可以寫成幾個質數相乘的形式,這幾個質數就都叫做這個合數的質因數。如果一個質數是某個數的因數,那麼就說這個質數是這個數的質因數。分解質因數的方法是先用一個合數的最小質因數去除這個合數,得出的數若是一個質數,就寫成這個合數相乘形式;若是一個合數就繼續按原來的方法,直至最後是一個質數 。

方法有兩種:

1、相乘法

寫成幾個質數相乘的形式(這些不重複的質數即為質因數),實際運算時可採用逐步分解的方式。

如:36=2*2*3*3 運算時可逐步分解寫成36=4*9=2*2*3*3或3*12=3*2*2*3

2、短除法

從最小的質數除起,一直除到結果為質數為止。分解質因數的算式的叫短除法(┖是短除法的符號)

如:36 2┖36=18 2┖18=9 3┖3=3 結論36=2*2*3*3

對於廣義空間不存在最大的質數。

對於被分解的合數(質數不能再分解)來說存在最大的質數。

按短除法從最小質數開始相除到結果為質數止,最後的質數為該數的最大質因數。

如36的最大質因數為3(質因數為2、3)

如8的質因數為2,105的質因數為3、5、7(最大質因數7)

c語言,輸入一個正整數,將這個正整數分解質因數

急!!j**a程式 怎麼把一個數分解質因數呀?要**

c++分解質因數過程

17樓:南霸天

1、分解質因數定義:

每個合數都可以寫成幾個質數相乘的形式。其中每個質數都是這個合數的因數,叫做這個合數的分解質因數。分解質因數只針對合數。

2、分解質因數方法:

分解質因數的算式叫短除法。求一個數分解質因數,要從最小的質數除起,一直除到結果為質數為止。

3、分解質因數程式設計:

#include

using namespace std;

class qualityfactor

private:

int n;

public:

void qfcontract(long a) /用短除法對合數進行分解。

n = 0; /初始化。

while(a>1)

for(int i=2;i<=a;i++)if(a%i==0) /短除法。

a = a/i;

cout

long number;

cout 《輸入要解的合數" cin>>number;

system("pause");

return 0;

執行結果:

18樓:網友

你把cout前還有else前用大括號括起來,作為一個程式段,不然if到cout句就終止了,後面的else沒有匹配的if句。

把24分解質因數是(),把24分解質因數正確的是()

把24分解質因數是 2 2 2 3 懸賞分 10 離問題結束還有 8 天 8 小時一個最簡分數的分子是最小的質數,分母是合數,這個數最大是 2 9 如果再加上 7 個這樣的分數單位 就得到1 用一根52釐米長的鐵絲,恰好可以旱成一個長方形框架,框架長6cm,寬4cm,高 3 cm 問題補充 把一個長...

用分解質因數的方法算360的因數有幾個

360 2x180 2x2x90 2x2x2x45 2x2x2x5x9 2x2x2x5x3x3 一個數的因數的總數等於每種相同質因數的個數加1的乘積,所以360的因數有4x2x3 24個,列舉出來就是。求360共有多少個因數?這些因數的和是多少?用短除法或者分解質因數解題 可以分解質因數。360 2...

下列式子中,屬於分解質因數的是A

小神馬醬 選項a 因數9為合數,所以不是分解質因數 選項b 將42分解為2 3 7三個質數相乘的形式,即將42分解質因數 選項c 因數1不是質數,所以不是分解質因數 故選 b 下列式子中,屬於分解質因數的是 a 54 2 3 9b 42 2 3 7c 12 1 2 2 友誼 選項a 因數9為合數,所...