C语言设计程序找出完数中的for循环问题

#define M 1000
#include<stdio.h>
int main()
{
	int n,i,s;
	for(n=2;n<=M;n++)
	{
		s=0;
		for(i=1;i<n;i++)
			if(n%i==0)
				s+=i;
			if(s==n)
			{
				printf("%d,its factors are:",n);
			 for(i=1;i<n;i++)
				 if(n%i==0)
					printf("%d ",i);
			 printf("\n");
			}
	}
	return 0;
}

以上我编写的程序,然后问题在于最后一个for循环语句,本人将下面的if条件补在for里面:for(i=1;i<n&&n%i==0;i++)

结果输出有误,希望大家能帮着运行这个程序,两种情况输出结果不一样,后者明显错误,但为什么?发布

Dr_风扬
浏览 2015回答 1
1回答

Absolute_Duo

for(i=1;i<n;i++)                 if(n%i==0)                    printf("%d ",i);这之中的if判断不会中断循环的执行,即判断为false不会跳出循环;但for(i=1;i<n&&n%i==0;i++)中n%i==0的判断一旦为false就会跳出循环;
打开App,查看更多内容
随时随地看视频慕课网APP