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分解質因數是 2 2 2 3 懸賞分 10 離問題結束還有 8 天 8 小時一個最簡分數的分子是最小的質數,分母是合數,這個數最大是 2 9 如果再加上 7 個這樣的分數單位 就得到1 用一根52釐米長的鐵絲,恰好可以旱成一個長方形框架,框架長6cm,寬4cm,高 3 cm 問題補充 把一個長... 360 2x180 2x2x90 2x2x2x45 2x2x2x5x9 2x2x2x5x3x3 一個數的因數的總數等於每種相同質因數的個數加1的乘積,所以360的因數有4x2x3 24個,列舉出來就是。求360共有多少個因數?這些因數的和是多少?用短除法或者分解質因數解題 可以分解質因數。360 2... 小神馬醬 選項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為合數,所...把24分解質因數是(),把24分解質因數正確的是()
用分解質因數的方法算360的因數有幾個
下列式子中,屬於分解質因數的是A