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

看板java作者 (守護世界未來希望的紳士)時間5年前 (2019/10/23 23:09), 編輯推噓1(1063)
留言64則, 6人參與, 4年前最新討論串1/1
本人資工系的小大一 使用的是Java的VSC 今天課堂練習有個問題難以解決 文題如下: 使用者輸入一陣整數n,找出小於等於n中,其質因數只有2或3或5的數字總和. 不太理解的地方是如何把其他除了2.3.5以外的質數取出當作條件 把不合的數字去掉 本人目前教到for迴圈 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.217.108.80 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/java/M.1571843388.A.AEF.html

10/23 23:29, 5年前 , 1F
這是數學問題吧,條件應該是用235可以組出、且小於n的數字
10/23 23:29, 1F

10/23 23:29, 5年前 , 2F

10/23 23:29, 5年前 , 3F
不需要去管其他質數
10/23 23:29, 3F

10/23 23:30, 5年前 , 4F
只要有除了2.3.5以外的質因數這數字就不能加到迴圈
10/23 23:30, 4F

10/23 23:33, 5年前 , 5F
應該說 只要有這3個以外的質數包含在裡面就不能用
10/23 23:33, 5F

10/23 23:34, 5年前 , 6F
你現在的想法是1~n濾掉不合的,你可以想想組出符合條件,但
10/23 23:34, 6F

10/23 23:34, 5年前 , 7F
不超過n怎麼寫
10/23 23:34, 7F

10/23 23:40, 5年前 , 8F
emm 抱歉 有點不太懂..
10/23 23:40, 8F

10/24 00:01, 5年前 , 9F
符合條件的數字,x = 2^a * 3^b * 5^c
10/24 00:01, 9F

10/24 00:03, 5年前 , 10F
x <=n,2的部分是2^0,2^1,2^2...2^a 皆<=n,3、5同理
10/24 00:03, 10F

10/24 00:04, 5年前 , 11F
可以用三層迴圈各別跑2、3、5的部分
10/24 00:04, 11F

10/24 00:05, 5年前 , 12F
因為教到迴圈我猜是要往這個方向解啦,當然你的作法也可以
10/24 00:05, 12F

10/24 00:05, 5年前 , 13F
但是看起來還沒教怎麼記數字下來? 不然你應該自己就會解吧
10/24 00:05, 13F

10/24 00:25, 5年前 , 14F
喔 我懂了 但是這樣還是會卡其他質數
10/24 00:25, 14F

10/24 00:26, 5年前 , 15F
舉個例子 22 他有11這個麻煩的傢伙 但他有2
10/24 00:26, 15F

10/24 00:26, 5年前 , 16F
這樣的話2^a就會算到他
10/24 00:26, 16F

10/24 00:28, 5年前 , 17F
那20呢? 他有2*2*5 這樣迴圈算不到呢
10/24 00:28, 17F

10/24 00:34, 5年前 , 18F
2^a只有2,4,8,16,32...怎麼會算到22? 20=2^2*3^0*5^1有啊
10/24 00:34, 18F

10/24 00:35, 5年前 , 19F
不是三個迴圈,是三層
10/24 00:35, 19F

10/24 00:44, 5年前 , 20F
喔!!! 好 我試試看
10/24 00:44, 20F

10/24 00:45, 5年前 , 21F
非常謝謝
10/24 00:45, 21F

10/24 00:54, 5年前 , 22F
抱歉..我沒試成功...迴圈的部分可以再詳細一點嗎?
10/24 00:54, 22F

10/24 00:54, 5年前 , 23F
有run過了 還是卡住
10/24 00:54, 23F

10/24 01:28, 5年前 , 24F
i=1,2,4...(<=n) j=1,3,9...(<=n) k=1,5,25...(<=n)
10/24 01:28, 24F

10/24 01:30, 5年前 , 25F
x=i*j*k,如果x<=n就是要求的數之一,只能說到這了
10/24 01:30, 25F

10/24 01:31, 5年前 , 26F
你要檢查一下迴圈繼續的條件,你上面圖裡i>=n是錯的
10/24 01:31, 26F

10/24 20:35, 5年前 , 27F
int sum = 0;
10/24 20:35, 27F

10/24 20:35, 5年前 , 28F
int n = 99;
10/24 20:35, 28F

10/24 20:35, 5年前 , 29F
for (int i = 0; i <= n; i++) {
10/24 20:35, 29F

10/24 20:35, 5年前 , 30F
if (i % 2 == 0 && i % 3 == 0 && i % 5 == 0 ) {
10/24 20:35, 30F

10/24 20:35, 5年前 , 31F
sum += i;
10/24 20:35, 31F

10/24 20:36, 5年前 , 32F
}
10/24 20:36, 32F

10/24 20:36, 5年前 , 33F
}
10/24 20:36, 33F

10/24 20:36, 5年前 , 34F
System.out.println(sum);
10/24 20:36, 34F

10/24 20:36, 5年前 , 35F
這樣有錯嗎XD
10/24 20:36, 35F

10/24 22:01, 5年前 , 36F
樓上你寫的是質因數「有」2和3和5
10/24 22:01, 36F

10/24 22:01, 5年前 , 37F
題目是質因數「只有」2或3或5
10/24 22:01, 37F

10/24 22:43, 5年前 , 38F
哦哦 中文太差了 大概想一下 改一下for迴圈內容
10/24 22:43, 38F

10/24 22:43, 5年前 , 39F
j = 1;
10/24 22:43, 39F

10/24 22:43, 5年前 , 40F
if (i % 2 == 0) {
10/24 22:43, 40F

10/24 22:43, 5年前 , 41F
while (Math.pow(2, j) <= i) {
10/24 22:43, 41F

10/24 22:44, 5年前 , 42F
if (i == Math.pow(2, j)) {
10/24 22:44, 42F

10/24 22:44, 5年前 , 43F
sum += i;
10/24 22:44, 43F

10/24 22:44, 5年前 , 44F
break;
10/24 22:44, 44F

10/24 22:44, 5年前 , 45F
}
10/24 22:44, 45F

10/24 22:44, 5年前 , 46F
j++;
10/24 22:44, 46F

10/24 22:44, 5年前 , 47F
}
10/24 22:44, 47F

10/24 22:44, 5年前 , 48F
}
10/24 22:44, 48F

10/24 22:45, 5年前 , 49F
3跟5就一樣的模式 大概想一下的答案 應該不是最佳解XD
10/24 22:45, 49F

10/25 09:33, 5年前 , 50F
這看起來會是「只有2」或「只有3」或「只有5」
10/25 09:33, 50F

10/25 19:19, 5年前 , 51F
比較簡單的做法是(假設x 大於 1):while(x > 1) { if
10/25 19:19, 51F

10/25 19:19, 5年前 , 52F
(x%2 ==0) x /=2; else if (x%3 ==0) x/=3; else if
10/25 19:19, 52F

10/25 19:19, 5年前 , 53F
(5 照著做)else return false; } return true;
10/25 19:19, 53F

10/25 19:21, 5年前 , 54F
簡單來說,一直以2,3,5 去除該數,最後變1 的就是因
10/25 19:21, 54F

10/25 19:21, 5年前 , 55F
數只有235,否則則包含其他質因數。
10/25 19:21, 55F

10/25 19:22, 5年前 , 56F
咦我看錯題目了
10/25 19:22, 56F

10/25 21:06, 5年前 , 57F
單一個數的檢驗是可以這樣做沒錯啦
10/25 21:06, 57F

10/25 21:19, 5年前 , 58F
所以才說看錯題目了 XD
10/25 21:19, 58F

10/25 21:20, 5年前 , 59F

10/25 21:22, 5年前 , 60F
參考,第一段是我說的方法,第二段是原PO一開始想的方法
10/25 21:22, 60F

10/26 08:17, 5年前 , 61F
要不要直接 po 在 stackoverflow 呀!XD
10/26 08:17, 61F

12/27 00:15, 4年前 , 62F
我也是剛學迴圈,我的做法是這樣 https://i.imgur.com/
12/27 00:15, 62F

12/27 00:15, 4年前 , 63F
hlLgmnd.jpg
12/27 00:15, 63F

12/27 00:17, 4年前 , 64F
文章代碼(AID): #1Ti6qyhl (java)
文章代碼(AID): #1Ti6qyhl (java)