题解 | #完全数计算#

完全数计算

http://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		while(sc.hasNext()){
			int scope = sc.nextInt();//输入一个数scope,寻找2~scope范围内的完美数
			int count = 0;
			
			
			for(int mayBePerfect=2; mayBePerfect<=scope; mayBePerfect++){//从2开始一个个测试(累加它的所有约数)看是否完美
				if(testPerfect(mayBePerfect)){
					count++;
				}
			}
			System.out.println(count);
		}
		
		sc.close();
	}
	
	public static boolean testPerfect(int mayBePerfect){//测试给定的1个参数(数字),累加它的所有约数,看是否完美
		int sum = 1;
		for(int diviser=2; diviser<=mayBePerfect/2; diviser++){//找出所有约数,并累加。约数最大不会超过一半,所以找到中间1/2就行了。
			if(mayBePerfect % diviser == 0){//如果j能整除i,那么j是约数
				sum += diviser;//每个约数累加
			}
		}
		//所有约数相加完毕
		
		
		if(sum == mayBePerfect){
//			System.out.println(mayBePerfect);
			return true;
		}
		else{
			return false;
		}
	}

}
全部评论

相关推荐

01-07 15:50
四川大学 Java
明远湖摸鱼:同年级的同学,,简历可以大一点,这个有点太密集了,实习技术可以量化的尽量量化
点赞 评论 收藏
分享
一天代码十万三:实习东西太少了,而且体现不出你业务,3个月不可能就这点产出吧,建议实习多写点,玩具项目面试官都不感兴趣的
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务