题目说明
如题
有点容易超时
例如关于数字6的时候
当枚举约数2的时候用6/2=3就可以顺便加上3,减少一次遍历的过程,达到加速的效果
java 代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String str = bf.readLine();
int t = Integer.parseInt(str);
int n;
int ans;
while (t > 0) {
str = bf.readLine();
n = Integer.parseInt(str);
if (n == 1) {
ans = 0;
} else {
ans = 1;
}
for (int i = 2; i <= n / i; i++) {
if (n % i == 0) {
ans += i;
if (n / i != i) {
ans += n / i;
}
}
}
if (n==ans) {
System.out.printf("%d is perfect\n", n);
} else {
System.out.printf("%d is not perfect\n", n);
}
t--;
}
}
}