→ ssccg: 這是數學問題吧,條件應該是用235可以組出、且小於n的數字 10/23 23:29
→ ssccg: 不需要去管其他質數 10/23 23:29
→ Pipboy2012: 只要有除了2.3.5以外的質因數這數字就不能加到迴圈 10/23 23:30
→ Pipboy2012: 應該說 只要有這3個以外的質數包含在裡面就不能用 10/23 23:33
→ ssccg: 你現在的想法是1~n濾掉不合的,你可以想想組出符合條件,但 10/23 23:34
→ ssccg: 不超過n怎麼寫 10/23 23:34
→ Pipboy2012: emm 抱歉 有點不太懂.. 10/23 23:40
→ ssccg: 符合條件的數字,x = 2^a * 3^b * 5^c 10/24 00:01
→ ssccg: x <=n,2的部分是2^0,2^1,2^2...2^a 皆<=n,3、5同理 10/24 00:03
→ ssccg: 可以用三層迴圈各別跑2、3、5的部分 10/24 00:04
→ ssccg: 因為教到迴圈我猜是要往這個方向解啦,當然你的作法也可以 10/24 00:05
→ ssccg: 但是看起來還沒教怎麼記數字下來? 不然你應該自己就會解吧 10/24 00:05
→ Pipboy2012: 喔 我懂了 但是這樣還是會卡其他質數 10/24 00:25
→ Pipboy2012: 舉個例子 22 他有11這個麻煩的傢伙 但他有2 10/24 00:26
→ Pipboy2012: 這樣的話2^a就會算到他 10/24 00:26
→ Pipboy2012: 那20呢? 他有2*2*5 這樣迴圈算不到呢 10/24 00:28
→ ssccg: 2^a只有2,4,8,16,32...怎麼會算到22? 20=2^2*3^0*5^1有啊 10/24 00:34
→ ssccg: 不是三個迴圈,是三層 10/24 00:35
→ Pipboy2012: 喔!!! 好 我試試看 10/24 00:44
→ Pipboy2012: 非常謝謝 10/24 00:45
→ Pipboy2012: 抱歉..我沒試成功...迴圈的部分可以再詳細一點嗎? 10/24 00:54
→ Pipboy2012: 有run過了 還是卡住 10/24 00:54
→ ssccg: i=1,2,4...(<=n) j=1,3,9...(<=n) k=1,5,25...(<=n) 10/24 01:28
→ ssccg: x=i*j*k,如果x<=n就是要求的數之一,只能說到這了 10/24 01:30
→ ssccg: 你要檢查一下迴圈繼續的條件,你上面圖裡i>=n是錯的 10/24 01:31
→ WildCherry: int sum = 0; 10/24 20:35
→ WildCherry: int n = 99; 10/24 20:35
→ WildCherry: for (int i = 0; i <= n; i++) { 10/24 20:35
→ WildCherry: if (i % 2 == 0 && i % 3 == 0 && i % 5 == 0 ) { 10/24 20:35
→ WildCherry: sum += i; 10/24 20:35
→ WildCherry: } 10/24 20:36
→ WildCherry: } 10/24 20:36
→ WildCherry: System.out.println(sum); 10/24 20:36
→ WildCherry: 這樣有錯嗎XD 10/24 20:36
→ ssccg: 樓上你寫的是質因數「有」2和3和5 10/24 22:01
→ ssccg: 題目是質因數「只有」2或3或5 10/24 22:01
→ WildCherry: 哦哦 中文太差了 大概想一下 改一下for迴圈內容 10/24 22:43
→ WildCherry: j = 1; 10/24 22:43
→ WildCherry: if (i % 2 == 0) { 10/24 22:43
→ WildCherry: while (Math.pow(2, j) <= i) { 10/24 22:43
→ WildCherry: if (i == Math.pow(2, j)) { 10/24 22:44
→ WildCherry: sum += i; 10/24 22:44
→ WildCherry: break; 10/24 22:44
→ WildCherry: } 10/24 22:44
→ WildCherry: j++; 10/24 22:44
→ WildCherry: } 10/24 22:44
→ WildCherry: } 10/24 22:44
→ WildCherry: 3跟5就一樣的模式 大概想一下的答案 應該不是最佳解XD 10/24 22:45
→ ssccg: 這看起來會是「只有2」或「只有3」或「只有5」 10/25 09:33
→ adrianshum: 比較簡單的做法是(假設x 大於 1):while(x > 1) { if 10/25 19:19
→ adrianshum: (x%2 ==0) x /=2; else if (x%3 ==0) x/=3; else if 10/25 19:19
→ adrianshum: (5 照著做)else return false; } return true; 10/25 19:19
→ adrianshum: 簡單來說,一直以2,3,5 去除該數,最後變1 的就是因 10/25 19:21
→ adrianshum: 數只有235,否則則包含其他質因數。 10/25 19:21
→ adrianshum: 咦我看錯題目了 10/25 19:22
→ ssccg: 單一個數的檢驗是可以這樣做沒錯啦 10/25 21:06
→ adrianshum: 所以才說看錯題目了 XD 10/25 21:19
→ ssccg: 參考,第一段是我說的方法,第二段是原PO一開始想的方法 10/25 21:22
→ GGing: 要不要直接 po 在 stackoverflow 呀!XD 10/26 08:17
→ icpc0928: hlLgmnd.jpg 12/27 00:15