|
60鱼币
以下是求3000以内亲密数的代码,第一个代码无法运行,第二个代码可以正常编译,他俩的区别就在于第一个是在for循环外面赋值的,按常理来说不是应该在for循环外面赋值更好么?为啥反而编译不了了??
#include<stdio.h>
int main()
{
int a,i,b=0,n=0;
printf("下面是3000以内的亲密数:\n");
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);
}
}
***************************
#include<stdio.h>
int main()
{
int a,i,b,n;
printf("下面是3000以内的亲密数:\n");
for(a=1;a<=3000;a++)
{
for(b=0,i=1;i<=a/2;i++)
if((a%i==0))
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 进行计算时,都需要重置 b 和 n 为0。内层for循环要是只运行一次,那可以放到外面赋值,但是外面套了一层循环,运行不止一次,当然每次就需要重置一下 b 、 n
|
最佳答案
查看完整内容
因为最外层循环,也就是对每一个 a 进行计算时,都需要重置 b 和 n 为0。内层for循环要是只运行一次,那可以放到外面赋值,但是外面套了一层循环,运行不止一次,当然每次就需要重置一下 b 、 n
|