c語言 把乙個數轉換成 幾個質數的積 的形式

時間 2023-02-14 00:45:04

1樓:冉丹琴

// 下面的程式可以把乙個偶數表示成其質數的乘積之和 #include///判斷素數 int f(int n) void main() printf(""

(j**a) 將乙個自然數分解成幾個質數的連乘積形式 舉例 input:60 output:2*2*3*5 15

2樓:鯨魚爸爸

package ;

import ;

import ;

public class test1

//去掉最後乙個「*」號。s =

}public listgetnum(int n)}else if(i < 3)

}else}i +=2 ;

}if(num !=1)

return list ;

}public static void main(string args)

}這個演算法是我原創的哦。時間複雜度最差應該是 o(sqrt(n)) 居然不用判斷用來做除數的是不是質數,o(∩_o哈哈~

求寫乙個c語言程式 講乙個數字分解成三個質數想乘

3樓:漠影歌

int issushu(int n)這是判斷素數部分,還有主函式部分,需要繼續追問,不明白的地方標出來。

c語言程式:將乙個正整數分解成若干素數的冪次方的乘積

4樓:之經亙姒郎

//**如下,不明確的歡迎追問。

#include

#include

intmain()

if(!e)

continue;

if(fir)

fir=0;//第一項還沒輸出,這裡遇到第一項,標誌設為0else

printf("*不是第一項,則先輸出'*'

printf("%d^%d",p,e);

}printf(""

return0;}

關於c語言「將乙個正整數分解成質因數的乘積」程式的問題

5樓:及珹彤白亦

/*a=1表示重頭開始掃瞄!!!因為我要獲得下乙個素因子,所以要從a=2掃瞄,雖然寫了a=1,可是a++以後就成2了*/

/*下面是我寫的**,lz可以參考一下*/#include""

ints[10005]=;素數表,=0表示是素數,=1表示為非素數*/

intp[5002],plen=0

;voidmklist()

intsplit(int

n,intfac[2])/返回素因子種類數*/

if(n!=1)

return

len;}void

main()

6樓:我的生活無意義

如果去掉了就會把多個質數當成了乙個。

比如12有這一句就輸出 12=2*2*3

沒有就輸出 12=2*3

你可以自己試一下就明的了。

c語言分解質因數

7樓:高金山

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的乙個因數。

8樓:九天之鳳舞

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的約數。

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

9樓:逃離

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

10樓:

有這樣幾個問題:

宣告的二維陣列是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]。

把這些錯誤改了再說。

11樓:匿名使用者

#include

#include

#include

int main()

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

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

else if(n==2)else

return 0;

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

集在遞迴從小屬到大除。

12樓:匿名使用者

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

13樓:星月小木木

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

#include

void main( )

else i++;

14樓:匿名使用者

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

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

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

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

15樓:冰封莊子

分解質因數,就是來。

將乙個合數自分解成幾個質數的乘積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

16樓:匿名使用者

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

#include

void main( )

else i++;

c語言如何將乙個正整數分解成質因數?

怎樣把excel一列(有四千個資料)轉換成一行(那就是1000行),求謝謝大神

假設資料在a列,轉換到bcde四列,b1 offset a a,4 row 4,0,1,1 c1 offset a a,4 row 3,0,1,1 d1 offset a a,4 row 2,0,1,1 e1 offset a a,4 row 1,0,1,1 選中b1 e1單元格,下拉複製,就ok了...

c語言如何求數的階乘,c語言如何求一個數的階乘 5

果果和糰子 n的階乘就是從1到的累積,所以可以通過一個for迴圈,從1到n依次求積即可。include stdio.h int main int n,i,s 1 scanf d n for i 1 i n i for迴圈求累積s s i printf d n s return 0 執行結果 例如求5...

C語言逆向輸出數字,C語言中,怎麼將乙個數反向輸出

include stdio.h int main printf n 輸出1行後換行 else 輸入的是偶數 printf n n 2 i 3 以4為例,輸出第1行後,n變成3,所以要加上2 0 3變成6 輸出第2行後,n變成4,加上2 1 3變成9if n 10 n 9 輸出第3行後,n變成6,加上...