#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 人评分
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1181 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:583 |
【偶数求和】 (C语言代码)浏览:450 |
sizeof的大作用 (C语言代码)浏览:1097 |
时间转换 (C语言代码)浏览:665 |
整数平均值 (C语言代码)浏览:817 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:565 |
简单的a+b (C语言代码)浏览:251 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:632 |
P1001 (Java代码)浏览:727 |