回 帖 发 新 帖 刷新版面

主题:请问一下为什么错??

#include"stdio.h"
#include"conio.h"
void main()
{
  int i,j,sum=1;clrscr();
 for(i=1;i<=1000;i++)
 {[color=00FF00]请问一下高手:把sum=1移到此处就可以!!!我感觉没关系的。系统又检不出错!!郁闷![/color]
  for(j=1;j<i;j++)
   if(i%j==0)
    sum+=j;
  if(sum==i)
 { printf("%5d its fastors are 1:",i);
  for(j=1;j<i;j++)
  if(i%j==0)printf(" %d",j); printf("\n"); }
 }
}

回复列表 (共3个回复)

沙发

你把sum移到那里之后,是这样:每次折行for(i=1;i<=1000;i++)这个循环时,sum都被重新赋值为1,然后再执行你的内循环,当if(i%j==0)sum+=j;这里sum就从1开始每次累加j,(貌似你是想把i对j的整除数累加再加1),如果你不把sum移到那里,那么你每次执行内循环时,当if(i%j==0) sum+=j时,sum的值会是上一次循环留下来的值,而不会是1,显然不满足你的要求

板凳

算法上的错误系统自然检查不出来

3 楼

深圳市华信群英科技有限公司与知名通信软件公司正式签订定向输送人才的合作协议
针对想进入IT软件行业的有志人士提供专业的企业内训
实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段
实训前就签订就业安置协议,岗前实训后入职
不仅学费优惠而且是企业定向培训定向招聘,百分百保证就业
有意向请登录www.szctt.com,或加QQ:1179397962做详细咨询

我来回复

您尚未登录,请登录后再回复。点此登录或注册