求解怎么能让这个程序快一点
2500年前数学大师毕达哥拉斯就发现,220与284两数之间存在着奇妙的联系:220的真因数之和为:1+2+4+5+10+11+20+22+44+55+110=284
284的真因数之和为:1+2+4+71+142=220
毕达哥拉斯把这样的数对称为相亲数。相亲数,也称为亲密数,如果整数A的全部因子(包括1,不包括A本身)之和等于B,且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。
从键盘任意输入一个整数n,编程计算并输出n以内的全部亲密数。
程序代码:
#include<stdio.h> int fide(int n) { int i,j[500],sum=0; for(i=1;i<=(n/2);i++) { if(n%i==0) { sum=sum+i; } } return sum; } int main() { int a,c,d,x,y; printf("input m\n"); scanf("%d",&a); for(x=1;x<a;x++) { c=fide(x); for(y=a;y>1&&y!=x;y--) { d=fide(y); if(c==y&&x==d) printf("(%d,%d)\n",y,x); } } }