黑马程序员技术交流社区

标题: 大神求解答这道题怎么做? [打印本页]

作者: 风云1989    时间: 2016-12-14 23:43
标题: 大神求解答这道题怎么做?
一个数如果恰好等于它的因子之和,
* 这个数就称为 "完数 "。
* 例如6=1+2+3。
*    6=1*2*3
*
* 编程找出1000以内的所有完数。

作者: 明天会更好!!    时间: 2016-12-15 00:08
个人意见,利用for循环,再用个math.random*1000,零到999之间的数,数据类型就用int没问题,math.random前面加个(int),强制转换,希望可以帮到你

作者: 风云1989    时间: 2016-12-15 00:11
这个不是随机数哦!

作者: 勤奋小白    时间: 2016-12-15 00:23
课后题,不难,将可以整出的除数放入集合,找出集合元素和等于这个数时打印就OK了

作者: 大黄蜂    时间: 2016-12-15 01:38
for(int i=1;i<=1000;i++){
  int sum = 0;
  for(int j=1,j<i;j++){
     if(i%j==0){
      sum += j;
  if(sum==i)
可以理解了吧,剩下的自己补充

作者: Albertups    时间: 2016-12-15 01:47
楼主:手机手打,加上main方法就可以出结果了:ArrayList<Integer> list=ArrayList<>();
for(int i=1;i<=1000;i++){
int count =0;
for(int j=1;j<=500;j++){
if(i%j==0){
count +=j;}}
if(count ==i){
list.add(i);}
}
Syso (list);

作者: 冷水泡面    时间: 2016-12-15 03:03
for循环1000个数 再for找出每个数的因子 用变量把因子之和存起来 对比这个保存因子和的变量与当前外层for的那个数 打印。。语无伦次不知道能不能看懂哈哈

作者: FAN8210    时间: 2016-12-15 06:39
Albertups 发表于 2016-12-15 01:47
楼主:手机手打,加上main方法就可以出结果了:ArrayList list=ArrayList();
for(int i=1;i ...

学习了,看来我还的努力

作者: 风云1989    时间: 2016-12-15 07:39
冷水泡面 发表于 2016-12-15 03:03
for循环1000个数 再for找出每个数的因子 用变量把因子之和存起来 对比这个保存因子和的变量与当前外层for的 ...

谢谢了啊 ,哈哈
作者: Albertups    时间: 2016-12-15 08:15
FAN8210 发表于 2016-12-15 06:39
学习了,看来我还的努力

一起努力

作者: 嘎嘎笔    时间: 2016-12-15 12:32
这个醉了

作者: IceLoveInFire丶    时间: 2016-12-15 13:27
啥叫因数搞懂了,就差不多了吧?

作者: 试着try    时间: 2016-12-15 20:12
6的因数不是包括6吗

作者: gczsjj    时间: 2017-1-4 23:21
class WanShu {
        public static void main(String[] args) {
                for(int i = 1;i <= 1000;i++){
                        if(isWanShu(i))
                                System.out.println(i);               
                }               
        }

        /*
                判断一个数是否是完数
                1.返回值boolean
                2.参数列表 int n
        */
        public static boolean isWanShu(int n) {
                int sum = 0;
                for(int i = 1;i <= n / 2;i++){
                        if(n % i == 0)
                                sum +=i;
                }
                return sum == n;
        }
}


作者: 一片叶~    时间: 2017-1-6 09:05
import java.io.*;
class test  
{
        public static void main (String[] args) throws java.lang.Exception
        {
                getWanShu();
        }
       
        public static void getWanShu() {
            
            for (int i = 2;i <= 1000;i++ ) {
                int sum = 0;
                
                for (int j = 1;j < i ;j++ ) {
                    if(i % j == 0) {
                        sum += j;
                    }
                }
                
                if(i == sum) {
                    System.out.println(i);
                }
                
            }
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2