#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]);
}
}
}
}
请问各位,求1000以内的为完数的自然数,我错在哪了,输出老是错误,能帮纠正一下吗
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- qzjhjxj 2021-11-17 09:26关注
修改如下,供参考:
#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]); //修改 } } } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 关于移动机器人坐标计算
- ¥30 模拟电路 logisim
- ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
- ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
- ¥15 安装quartus II18.1时弹出此error,怎么解决?
- ¥15 keil官网下载psn序列号在哪
- ¥15 想用adb命令做一个通话软件,播放录音
- ¥30 Pytorch深度学习服务器跑不通问题解决?
- ¥15 部分客户订单定位有误的问题
- ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法