逝者如斯,不舍昼夜

尘世中一个迷途小书童,读书太少,想得太多
posts - 72, comments - 55, trackbacks - 0, articles - 0
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

华为机试题——完全数判断

Posted on 2016-06-14 20:14 SteveWang 阅读(...) 评论(...) 编辑 收藏

 

  这篇博文同上篇博文百度2017年暑期实习生笔试题——单词接龙同属2016中兴捧月蓝剑之路挑战赛初赛模拟测试题,相比前一题难度偏低,非恶意灌水,仅为保证该系列博文的完整性。

 

  题目来源:iNOC产品部--完全数计算

  这道题同时也是2016中兴捧月蓝剑之路挑战赛初赛模拟测试题,问题描述如下图:

 

  测试用例如下图:

 

  中兴的比赛中官方已经为我们实现了主程序,只需要我们自己实现PerfectNumber类的perfectNumberCheck方法即可,而华为iNOC产品部机试题是要统计出所给范围内完全数的个数,比中兴的模拟题稍复杂,以此为准,Java实现的源码如下:

 

package perfectnumber;

public class Main 
{

    public static void main(String[] args) 
    {
        // TODO Auto-generated method stub
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext())
        {
            int n = scan.nextInt();
            int sum = 0;
            for(int i = 1; i <= n; i++)
            {
                if(PerfectNumber.perfectNumberCheck(i) == 1)
                    sum++;
            }
            System.out.println(sum);
            
        }
        scan.close();
    }
    
}

class PerfectNumber {

    public static int perfectNumberCheck(int n)
    {
        int sum = 0;
        for(int i = 1; i < n; i++)
        {
            if(n % i == 0)
                sum += i;
        }
        if(sum == n)
            return 1;
        else
            return 0;
    }
}