题解 | #完全数计算#

完全数计算

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;
		}
	}

}
全部评论

相关推荐

点赞 评论 收藏
分享
就用这个吧:支持多益再加一个空气使用费
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务