怎么优化程序才能减少运行时间

所谓亲密数是指正整数a的因数和是b,而b的因数和是a,且a和b不相等,则称a和b是亲密数。输入n,请将1-n之间的所有亲密数输出且不重复。

【输入形式】

输入正整数n,n的范围1-100000
【输出形式】

输入的两个亲密数在一行上,中间用一个空格隔开
【样例输入】

1000
【样例输出】

220 284
【样例说明】
【评分标准】

#include
using namespace std;
int yinshu(int n){int a=0;
for(int i=1;i
if(n%i==0)
a+=i;
}return a;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i
if(j!=i&&yinshu(j)==i&&yinshu(i)==j)
cout<
}
}

return 0;

}


#include<bits/stdc++.h>

using namespace std;

int he(int n) {
    int i, s = 0;
    for (i = 2; i <= sqrt(n); i++) {
        if (n % i == 0) {
            if (n / i != i) {
                s = s + n / i + i;
            } else s = s + i;
        }
    }
    return s;
}
int main() {
    int n, i;
    cin >> n;
    for (i = 1; i <= n; i++) {
        if (i == he(he(i)) && i != he(i) && he(i) <= n)
            cout << i << " " << he(i) << endl;
    }
}