#include <stdio.h>
#include <time.h>
main()
{
int i, j, k, sum = 0, temp, x, y, z, a;
int begin, end;
begin = time(NULL);
for (i = 10; i < 10000; i++)
{
if (i == z) //当找到一个亲和数,它的相亲数直接跳过循环
{
sum += z;
goto Label;
}
k = i / 2;
temp = 0;
y = 0;
for (j = 2; j <= k; j++)//找真因子
{
if (i % j == 0)
{
temp += j;
}
}
temp++;
z = temp;
x = temp / 2;
for (j = 2; j <= x; j++)//找真因子
{
if (temp % j == 0)
{
y += j;
}
}
y++;
if (y == i && y != z)
{
sum += i;
a = z;
}
Label:continue;
}
end = time(NULL);
printf("%d\n", sum);
printf("time = %d", end - begin);
}
31626
time = 0
自己进行了小小的优化,应该还有很多提升空间,望大佬指教! |