[问题] 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