永发信息网

C语言程序求完数

答案:6  悬赏:70  手机版
解决时间 2021-03-23 15:48
  • 提问者网友:了了无期
  • 2021-03-22 21:33
C语言程序求完数
最佳答案
  • 五星知识达人网友:罪歌
  • 2021-03-22 21:48
s需要每次都在第一个for循环里边设置初值为0;即:

#include
#include
main()
{
int i,j,yin;

for(i=1;i<1000;i++)
{
int s=0;
yin=i;
for(j=1;j{
if(yin%j==0)
s=s+j;
}
if(yin==s)
printf("%d",yin);
}
}
全部回答
  • 1楼网友:英雄的欲望
  • 2021-03-23 02:38
#include
int main()
{
int n=1000;
int r,j,i;
for(i=1;i r = 0;
for(j=1;j if(i%j == 0){
r = r + j;
}
}
if(r == i){
printf("the result is:%d\n",r);
r = 0;
}
}
return 0;
}
  • 2楼网友:胯下狙击手
  • 2021-03-23 01:56
正解
  • 3楼网友:詩光轨車
  • 2021-03-23 00:59
程序如下,....不还我是不太了解,完数的意义.
如果按你的解释,那么 1也应该是,但为什么没有?所以我也不敢乱改你的程序.
只是简单的找出程序的错误..希望能帮上你的忙....
#include
#include
main()
{
int i,j;
for(i=1;i<1000;i++)
{
int s=0;
for(j=1;j {
if(i%j==0)
s=s+j;
}
if(i==s)
printf("%d ",i);
}
getchar();
}

另外,要提醒一句,能少用变量就少用变量.这是一个良好的习惯.
每一个变量都是要分内存空间的.
  • 4楼网友:躲不过心动
  • 2021-03-23 00:14
#include
#include

void main()
{
int s=0;
for(int i=1;i<1000;i++)
{
s=0;
int yin = (int)sqrt(i);
for(int j=1;j<=yin;j++)
{
if(i%j==0)
{
s+=j;
if(j>1)
s+=i/j;
}
}
if(i==s)
printf("%d\r\n", i);
}
}
  • 5楼网友:北城痞子
  • 2021-03-22 23:26
#include
#include
int main()
{
int i,j,yin;
int s=0;
for(i=1;i<1000;i++)
{
s=0;
yin=i;
for(j=1;j{
if(yin%j==0)
s=s+j;
}
if(yin==s)
printf("%d\n",yin);
}
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯