回 帖 发 新 帖 刷新版面

主题:急求

# include <stdio.h>
main()
{int i,j,s=0;
    for(i=2;i<=1000;i++)
    {for(j=1;j<i;j++)
    if(i%j==0)  
    s+=j;
    if(s==i) printf("%4d",i);
    }
}和
# include <stdio.h>
main()
{int i,j,s;
    for(i=2;i<=1000;i++)
    {for(j=1,s=0;j<i;j++)
    if(i%j==0)  
    s+=j;
    if(s==i) printf("%4d",i);
    }
}
的区别是什么

回复列表 (共5个回复)

沙发

第二个程序求得的是所有小于i的能被i整除的数的和,如果和i相同输出
而第一个程序是将所有的i包括i之前的能被相应的这个数整除的数的和,和i比较,如果相同输出

板凳

一楼能不能说的再清楚一些 谢谢啊

3 楼


挺有意思的一小段程序。

for ( 1 ; 2 ; 3 ) { .. code.. }

  运行过程是 :    1  -->  2  -->  code -->  3 --> 
                           ^                     |
                           |                     |
                           |-----<<<-------------| 

所以,在第二段程序里,S会接连偶尔清清零的。

4 楼


在第二个程序中,每当第二个循环循环一次后S的值都会被清为0.

5 楼

不知道楼主的程序有什么用。我用VC测试了一下
第一个没有答案
第二个6 28 496
感觉没有什么实际意义,纯粹是出题人来搞人的题目
其实仔细看,很容易发现,无非是S的位置不同,也就意味着,第一个程序S一直累加,而第二个程序S第二重循环时,都会清空。楼主拿起笔,自己写一下,很快就发现了。

我来回复

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