提问 关于for
代码1:
#include<stdio.h>
void main()
{
int a,i,b=0,n=0;
for(a=1;a<3000;a++)
{
for(i=1;i<=a/2;i++)
if(!(a%i))b+=i;
for(i=1;i<=b/2;i++)
if(!(b%i))n+=i;
if(n==a&&a<b)
printf("%4d..%4d ",a,b);
}
}
代码2
#include<stdio.h>
int main()
{
int a,i,b,n;
for(a=1;a<3000;a++)
{
for(b=0,i=1;i<=a/2;i++)
if(!(a%i))b+=i;
for(n=0,i=1;i<=b/2;i++)
if(!(b%i))n+=i;
if(n==a&&a<b)
printf("%4d..%4d ",a,b);
}
}
针对 “如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。”,为何代码1不能解决,而代码2则能很好的解决呢?
2个代码不同之处是一个在变量声明时就赋值了,一个是在for里面赋值的。
望高手给详细讲解下,谢谢!!