请问这两个有什么不同

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int sumOfFactor(int n)
{
int sum=1,i;
for(i=2; i<sqrt(n); i++)
{
if(n%i==0)
{
int t;
t=n/i;
sum=sum+(i+t);
}
}
return sum;
}
int friendNum(int n)
{
int a,b;
a=sumOfFactor(n);
b=sumOfFactor(a);
if(n==b)
return a;
else
return 0;
}
int main()
{
int m,n;
scanf("%d",&m);
n=friendNum(m);
if (n>0)
printf("Find the friendly number of %d is %d.",m,n);
else
printf("There is no friendly number of %d.",m);
return 0;
}

你现在这个图的代码有问题,如果n正好是个平方数,比如9,那么当i为3的时候,你就将3加了两遍,也就是i和t相等的情况
而第二张图肯定没毛病

#include <stdio.h>
#include <stdlib.h>

int sumOfFactor(int n)
{
int sum=0;
for(int i=1;i<n;i++)
{
if(n%i==0)
sum=sum+i;
}
return sum;
}

int friendNum(int n)
{
int m;
m=sumOfFactor(n);
if(n==sumOfFactor(m))
return m;
else
return 0;
}
int main()
{
int m,n;
scanf("%d",&m);
n=friendNum(m);
if (n>0)
printf("Find the friendly number of %d is %d.",m,n);
else
printf("There is no friendly number of %d.",m);
return 0;
}