#include<stdio.h>
void get_ws_ys();
int main()
{
get_ws_ys();
return 0;
}
void get_ws_ys()
{
int t,i,j,k=1,factor[]={1},s=1;
for(i=1;i<=1000;i++)
{
if(i==1)
{
printf("1为完数\n");
printf("其因子有1个\n");
printf("为1\n");
continue;
}
if(i==2)
{
continue;
}
for(j=2;j<=i-1;j++)
{
if(i%j==0)
{
s+=j;
factor[k]=j;
k++;
}
}
if(s==i)
{
printf("%d为完数\n",i);
printf("其因子有%d个\n",k);
for(t=0;t<=k-1;t++)
{
printf("为%d",factor[k]);
}
}
}
}
修改如下,供参考:
#include<stdio.h>
void get_ws_ys();
int main()
{
get_ws_ys();
return 0;
}
void get_ws_ys()
{
int t, i, j, k = 1, factor[20], s = 1; //修改
for (i = 1; i <= 1000; i++)
{
if (i == 1)
{
printf("1为完数\n");
printf("其因子有1个\n");
printf("为1\n");
continue;
}
for (t = 0; t < 20; t++) //修改
{
factor[t] = 0;
}
for (j = 2, k = 1, factor[0] = 1, s = 1; j <= i - 1; j++) //修改
{
if (i % j == 0)
{
s += j;
factor[k] = j;
k++;
}
}
if (s == i)
{
printf("\n%d为完数", i); //修改
printf("其因子有%d个为:\n", k); //修改
for (t = 0; t <= k - 1; t++)
{
printf("%5d", factor[t]); //修改
}
}
}
}