[問題] 因數分解問題請教

看板C_and_CPP作者 (Firefighter)時間11年前 (2013/01/30 21:49), 編輯推噓4(4015)
留言19則, 10人參與, 最新討論串1/1
請問我在網站上找的程式 似乎有錯 可以跟我說一下錯在哪嗎 輸入30 輸出2*3*.... PS:相信我這真的不是作業 不要再誤會我了 拜託 #include <stdio.h> #include <stdlib.h> int main(void) { int n; printf("請輸入整數:"); scanf("%d", &n); printf("%d = ", n); int i; for(i = 2; i * i <= n;) if(n % i == 0) { printf("%d * ", i); n /= i; } else { i++; } return 0; } http://caterpillar.onlyfun.net/Gossip/AlgorithmGossip/GCDPNumber.htm 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.80.87.56 ※ 編輯: dunkjames 來自: 111.80.87.56 (01/30 21:55)

01/30 21:58, , 1F
用單步執行慢慢看吧
01/30 21:58, 1F

01/30 21:59, , 2F
最後加一行 printf("%d\n", n);
01/30 21:59, 2F

01/30 22:10, , 3F
之前發現那個站很多都是演算法筆記抄來的就不逛了
01/30 22:10, 3F

01/30 22:10, , 4F
是加在return 0之前吧@@?
01/30 22:10, 4F

01/30 22:23, , 5F
了解 3Q
01/30 22:23, 5F

01/30 22:32, , 6F
他最後那一個除完的沒有顯示出來
01/30 22:32, 6F

01/30 22:32, , 7F
所以你要自己加上去
01/30 22:32, 7F

01/30 22:40, , 8F
所以原po真的知道"為什麼"會少了最後一個數嗎?
01/30 22:40, 8F

01/30 22:56, , 9F
小提一下, if(n!=1) printf("%d\n", n);
01/30 22:56, 9F

01/31 13:16, , 10F
三樓可能搞反了 演算法筆記還沒出現以前 這個站就已經在了
01/31 13:16, 10F

01/31 14:06, , 11F
我指的是內容, 而且是指 C/C++ 的程式碼
01/31 14:06, 11F

01/31 16:13, , 12F
演算法筆記寫得很用心是真的,給 DJWS 一個推
01/31 16:13, 12F

01/31 20:05, , 13F
EdisonX大大提的 if(n!=1) 好像沒必要
01/31 20:05, 13F

01/31 20:06, , 14F
不管i是多少都不會發生n/=i之後n變成1的狀況吧
01/31 20:06, 14F

01/31 21:16, , 15F
樓上,n == 2, i == 2
01/31 21:16, 15F

01/31 22:02, , 16F
就算 n ==2 也不用if吧= =
01/31 22:02, 16F

02/05 00:16, , 17F
2*2≦30→30/2=15, 3*3≦15→15/3=5, (5*5≦5)?
02/05 00:16, 17F

02/05 00:18, , 18F
其實i=4的時候判斷式就不成立,跳出迴圈了
02/05 00:18, 18F

02/05 13:35, , 19F
樓上你的case不會跳到i==4 15除以3以後下一圈i還是3
02/05 13:35, 19F
文章代碼(AID): #1H2IJNAK (C_and_CPP)