c語言問題

2022-08-23 18:50:03 字數 1208 閱讀 7875

1樓:匿名使用者

這個程式是用來做因式分解的,演算法很簡單。如下:

首先輸入乙個正整數n,程式要做的就是將其因式分解,然後輸出結果。

分解的演算法,就是將整數i以從小到大的順序的順序去除這個數n;如果能整除,那麼i就是n的乙個因子,輸出i,並修改n=n/i; ;如果不能整除,則i不是,那麼i++,再去除,直到最後i==n時程式結束。

具體以90來看,試想你的小學老師讓你分解90為質數的積,你會怎麼做呢?

你會先用2去除,結果整除後為45;然後你再用2去除,發現不能整除;於是你用3去除,發現能整除,結果為15;然後再用3去除,還是能整除,結果為5;再除3就不能整除了,於是用4去除,當然不能整除了,因為2都不能整除;這個演算法就是用這種從小到大的方式保證分解之後的因子都是質數,而不會出現合數的。當4不能去整除時,就考慮5了,當然最後肯定有乙個數能除盡,程式也就結束了。

輸出為:

90=2*3*3*5

顯然,o0文曲星0o說錯了

2樓:o0文曲星

舉例n為90,首先螢幕顯示

1:90=

第一次迴圈時,n=90,i=2,n可以整除i,此時螢幕顯示"2*",n變為45,i變為3

2.90=2*

第二次迴圈,n=45,i=3,n可以整除i,顯示"3*",n變為15,i變為4

3.90=2*3*

第三次迴圈,n=15,i=4,n不可以整除i,i變為5

4.90=2*3*

第四次迴圈,n=15,i=5,n可以整除i,顯示"5*"n變為3,i變為6

5.90=2*3*5*

(此後,n=3不能整除任何i,直至i=n,迴圈結束。顯示"3")

6.90=2*3*5*3

不知你懂了沒有

不好意思是我弄錯了,「zx198799」說的對,我錯了。每一次i都是從2開始的,我弄錯了,不好意思

正解是90=2*3*3*5

3樓:匿名使用者

main()

中語句,否則執行else語句。n=90/2餘數為0,執行條件}}}

else

break; //跳出當前迴圈} }

printf("%d",n);} //輸出當前n的值}}}後

第2次迴圈

45%2=1不滿足if條件,執行else條件,即break,結束迴圈,回到for迴圈

再次執行。。。。

C語言問題,C語言問題

符合,相當於一個字元,ascii字元可以直接轉成short整型數字。101 不符合,這是一個字串,不能作為常數。不符合,因為 會對雙引號轉義,找不到另一個雙引號。會出錯。而且就算是 也不符合,因為編譯器會把它理解成一個字串,而非單個字元。e3不符合。019不符合,0開頭代表8進位制數,不能出現9。0...

C語言問題,c語言問題

這是值傳遞,值傳遞的過程的是,系統會給你的實參的值進行乙個拷貝,把這個拷貝傳遞給形式引數。因為是拷貝,所以實參裡頭的值是不會改變的。如果是位址傳遞就不一樣了。補充 你可以定義乙個指標,這個指標指向主函式的結構體。然後子函式的形參也定義乙個指向結構提的指標。這樣就是位址傳遞了。樓主還是好好花點時間看看...

c語言問題,求助,C語言問題,求助!!!

這種問題用哈夫曼樹的逆向思想就可以解決了,所以我建議還是自己按這思想好好研究一下。自食其力。c語言問題 因為 define s a p a a 定義後 是直接替換 運算過程是這樣的 3 3 5 3 5 所以是29 弱勢這樣定義的 p a a 結果就是192 3 3 5 3 5 9 15 5 29 巨...