能解释一下这个代码是咋回事吗

#include
#include

int main(){
int a;
while(scanf("%d",&a)!=EOF){
int i;
int sum = 0;
for(i=1;i<=sqrt(a);i++){
if(a%i==0){
sum+=i;
if(i!=a/i)
sum+=a/i;
}
}

    printf("%d\n",sum);
}

return 0;

}

就是计算一个整数的所有因子之和
可以输入多个整数。

while(scanf("%d",&a)!=EOF)的意思是有多组数据,重复赋值给a,当文件达到末尾时输入的是EOF,此时while循环结束