[問題] java 有條件的數字總和

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

Links booklink

Contact Us: admin [ a t ] ucptt.com