我这个程序是一个求1000以内完数的程序,环境是vc++, 运行时只出来6和28两个完数,还有一个不出来。在设了断点进行跟踪,发现一个很奇怪的现象,就是在数增加到240时,突然变为120,可我程序中没有让其变小的代码。我让同学帮我看了看仍不能解决,还是很奇怪,他的电脑上是当数运行到240时突变为24,机子不一样突变值居然还不一样。很奇怪,我把代码修改之后运行于turboc 2.0上,三个完数是出来了,但后面出来一窜乱码。我几天了,不能解决,麻烦了。以下是代码。
#include "stdafx.h"
#include "stdlib.h"
int _tmain(int argc, _TCHAR* argv[])
{
int i,j,k=0,p[10],r=0,a;
for(i=5;i<1000;i++)
{
{
r=0;
k=0;
for(j=1;j<=i/2;j++)
{
if((i%j)==0)
{
k=k+j;
p[r]=j;//它是到这行开始两行开始变值的
r++;
}
}
if(i==k)
{
printf("%d its factors are",i);
for (a=0;a<r;a++)
printf(" %d",p[a]);
r=0;
printf("\n");
}
}
}
system("pause");
return 0;
}