题目9:找出1000以内的所有完数

题目:

一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。

程序分析:

1)遍历i从2到1000的数;
  2)对这个数i从1到a-1进行除,然后将所有能整除a的数进行相加得sum;
  3)如果sum==a,则说明a为完数,否则,不是。

程序代码:

package com.ljy.tencent;
/**
 * 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。
 * 例如6=1+2+3.编程找出1000以内的所有完数。
 * 思路:
 * 1)遍历i从2到1000的数;
 * 2)对这个数i从1到a-1进行除,然后将所有能整除a的数进行相加得sum,
 * 3)如果sum==a,则说明a为完数,否则,不是。
 * @author liaojianya
 * 2016年10月6日
 */
public class WanShu
{
    static int count = 0;
    public static void main(String[] args)
    {
        //循环判断输出1~1000之间所有的完数
        System.out.println("以下为1000以内的完数:");
        for(int i = 2; i <= 1000; i++)
        {
            checkIs(i);
        }
        System.out.println();
        System.out.println("1000以内的完数一共有" + count + "个。");
    }
    //判断是否为完数
    public static void checkIs(int i)
    {
        int sum = 0;
        //用1~i-1去整除i,如果能被整除,则j即为i的因子,加到sum中去。
        for(int j = 1; j < i; j++)
        {
            if(i % j == 0)
            {
                sum += j;
            }
        }
        //如果i所有因子相加后的sum和i本身的值相同,则i为完数,并计数加一。
        if(sum == i)
        {
            count++;
            System.out.print(i + "\t");
        }
    }

结果输出:

以下为1000以内的完数:
6      28      496
1000以内的完数一共有3个。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容