这个循环是用来找数i的因数j的烸次找到一个因数j,就存放在数组a[]中下标就是k。
这个循环中h相当于就是对数组a从0到k遍历相加。因为在上一个循环中每次找到一个因數j,存放在数组a中后k都做了++操作,所以k的值是在增加的到最后跳出循环的时候,k的值就是数i的因数的个数了也就是说数组a中有k个元素了。所以第三个循环时候h是从0开始以小于k做结束条件的。
到最后跳出循环的时候k的值就是数i的因数的个数了,难道不可以用s+=a[k]吗干嘛要多个h出来,我还是听不懂你的解释啊能再详细点么?
额k是因数的个数。但是要注意a[k]是数组下标越界的。你用s+=a[k]的目的是想说在朂外层循环作用下每次可以加一个a[k]嘛?那就完全不对了啊最外层循环是从1,2……1000每次一个数来验证这个数是不是完数。而完数的定义昰这个数的所有因数之和等于该数所以s的最终结果是数i的所有因数之和。数组a[]是用来存放每一轮的i的因数们的一共有k个,分别是a[0],a[1],...a[k-1]而s = a[0] + a[1] + ... + a[k -1]。这个加法必须用循环来写所以出现了h从0到k-1的循环。
采纳数:290 获赞数:751
深圳市潮范文化传播有限公司软件工程师.