#求问大神们为什么得在for循环里面初始化值,而在for循环之外初始化值最后打印结果打印不出来
第一个是问题代码:
#include<stdio.h>
int main()
{
int Y, X, i, Ysum;
Y = X = i = Ysum = 0;
for (X = 1; X <= 3000; X++)
{//枚举3000以内所有数字
for (i = 1; i < X; i++)
{//循环寻找每个整数的因子
if (X % i == 0) //如果可以整除那就是因子,按照题目因子和为Y
Y += i;
}
for (i = 1; i < Y; i++)//循环寻找Y的全部因子
{
if (Y % i == 0)
Ysum += i;
}
if (Ysum == X && X < Y)
printf("%d的亲密数是%d\n", X, Y);
}
return 0;
}
运行结果:

修改之后的正确代码:
#include<stdio.h>
int main()
{
int Y,X, i,Ysum;
for (X = 1; X <= 3000; X++)
{//枚举3000以内所有数字
Y = 0;
for (i = 1; i < X; i++)
{//循环寻找每个整数的因子
if (X % i == 0) //如果可以整除那就是因子,按照题目因子和为Y
Y += i;
}
Ysum = 0;
for (i = 1; i < Y;i++)//循环寻找Y的全部因子
{
if (Y % i == 0)
Ysum += i;
}
if (Ysum==X&&X<Y)
printf("%d的亲密数是%d\n", X, Y);
}
return 0;
}
运行结果:
