1樓:匿名使用者
我不得不遺憾的告訴你,這是一個效率非常低的演算法,每找到一個素因子後都重新從2開始再次尋找,一個顯然的改進是找到一個素因子後反覆試除該因子
2樓:高金山
這樣註釋的已經很好了啊
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的一個因數
3樓:冰封莊子
分解質因數,就是將一個合數分解成幾個質數的乘積。
比如20=2*2*5
求質因數就是從2開始除,這就是這個演算法的原理比如輸入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
4樓:星月小木木
實現方法如下:
#include
void main( )
else i++;}}
5樓:逃離
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 6樓:九天之鳳舞 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的約數。 有不明白的地方再提出來吧~ 7樓: #include void main() else } printf("%d",k);} c語言分解質因數 8樓:高金山 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的一個因數 9樓:匿名使用者 #include void main() else } printf("%d",k);} 10樓:九天之鳳舞 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的約數。 有不明白的地方再提出來吧~ 11樓:逃離 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 12樓:匿名使用者 #include void main() else i++; }printf("\b \b");} 13樓:匿名使用者 #include "stdio.h" int main() printf("%d\n\n",j); }i+=1; }}while(n>0);} 14樓: #include int fenjie(heshu) else }return 0; }int main() } if (isprime==1) return 0;} 15樓:匿名使用者 #include #include #include int main() ;scanf("%d",&n); if(n<=1) exit(0); else if(n==2) else } } } return 0; }這個是算bai比較小du的數 大概思路就zhi是先篩選dao出質數專 集在遞迴從小屬到大除 16樓:慕容玄豫 #include "stdio.h" void main() else }else i++;}} 17樓:匿名使用者 這最佳答案輸出結果連x都沒有也能成最佳? 18樓:星月小木木 實現bai方du法zhi如dao下內:容 #include void main( ) else i++;}} 19樓:匿名使用者 if((n%i==0)&&(i!=n)) 這個來地方,i作為n的因數不一定只源出現一次所以bai 應該用duwhile迴圈,讓n=n/i直到無法除盡,zhi否則可能影響後面的因子 if((n%i==0)&&(i!dao=n)) 20樓:冰封莊子 分解質因數,就是來 將一個合數自分解成幾個質數的乘積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 21樓:匿名使用者 你寫bai的du太zhi復dao雜專了屬 #include void main( ) else i++;}} c語言 分解質因數 22樓:高金山 這樣註釋的已經很好了啊 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的一個因數 23樓: #include "stdio.h" int main() printf("%d\n\n",j); }i+=1; }}while(n>0);} 24樓: //#include "stdafx.h"//vc++6.0加上這一行. #include "stdio.h" bool prime(int n) void main(void) }for(i=0;a[i]!=-1;i++)printf("%d %d\n",j,n);}}} 14 2 7 18 2 3 3 分解質因數 每個合數都可以寫成幾個質數相乘的形式。其中每個質數都是這個合數的因數,叫做這個合數的分解質因數。分解質因數只針對合數。90的分解質因數是?40 90 九十 是89與91之間的一個自然數。90也是一個偶數。該數字可以表示年代。中文名九十 外文名ni y 大 ... struct student拼寫成struct studnt了。拼寫錯誤 struct studnt沒有定義,所以無法執行sizeof。include typedef struct student int main c語言問題?嗯你的理解是對的,break就是用來跳出的switch,如果沒有brea... 首先你這個程式輸入個數是不可控的,n沒起到作用,因為你控制輸入的迴圈已經規定了i是從0到99,必須要輸入100個。而你這個 自認為統計總人數 的n n i,相當於n 1 2 3 那是不可能的。while xh i scanf d d xh i sg i n i sum sum sg i 用美元符號做...14,18分解質因數,90的分解質因數是
c語言問題,C語言問題
c語言問題,c語言問題