java题解 | #完全数计算#
完全数计算
http://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
int count = 0;
//6是最小完全数
for (int i = 6; i <= n; i++) {
// 求约数只需要遍历到开方即可
int val = (int)Math.sqrt(i);
int sum = 1;
for (int j = 2; j<=val; j++) {
if (i%j == 0) {
// 把一对约数都加进去
sum+=j;
sum+=i/j;
}
}
if (sum == i) {
count++;
}
}
System.out.println(count);
}
sc.close();
} }
查看9道真题和解析
