#include<stdio.h>
int main()
{
int n,i,k,a[50],sum, j;
scanf("%d", &n);
for(i = 2;i<=n;i+=2) //为了加快速度,我认为不能被2整除的成不了完美数。
{
sum = 0;
k = 0;
for (j = (i / 2 + 1); j >= 1 ; j--)
{
if (i%j == 0)
{
sum += j;
if (sum > i) //为了加快速度,所以逆序,早点去除一些不符合要求的。
break;
}
}
if (sum == i)
{
for (j = 1; j < (sum / 2 + 1); j++)
{
if (sum%j == 0)
{
a[k] = j;
k++;
}
}
j = 0;
printf("%d its factors are ", i);
while (j < k)
{
printf("%d ", a[j]);//注意这里,我先是把空格放前面,就格式错误了。可以用鼠标划给的答案,可以看出空格情况
j++;
}
printf("\n");
}
}
system("pause");
return 0;
}
虽然可以通过,但觉得写得挺差的。
0.0分
1 人评分