#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二级辅导-进制转换 (C语言代码)浏览:473 |
蓝桥杯历届试题-九宫重排 (C++代码)浏览:2691 |
十->二进制转换 (C语言代码)浏览:1244 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:824 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:581 |
1908题解浏览:597 |
2^k进制数 (C语言描述,蓝桥杯)浏览:1343 |
判定字符位置 (C语言代码)浏览:742 |
【计算直线的交点数】 (C语言代码)浏览:849 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:526 |