花费大约O(n)的时间复杂度;
public class demo {
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("求10000以下的完全数:");
long[] a = new long[100000000];
for(int i = 1;i <= 10000;i++)
{
a[i] = 1;
}
for(int i = 2;i <= 10000;i++)
{
if(a[i] == i)
{
System.out.println(i);
}
for(int j = 2;j < 5000;j++)
{
a[j * i] += i;
}
}
}
}
结果: