从小到大输出两个正整数m和n(m≥6,n≤5000)之间的亲密数对。说明:若a和b为一对亲密数,则a的因子和等于b,b的因子和等于a,且a不等于b。例如,220与284是一对亲密数。
#include
int yin(int n);
int main()
{
int a,b,sum1,sum2;
int x,j;
scanf("%d%d",&a,&b);
for (x=a;x<=b;x++)
{
for (j=x+1;j<=b;j++)
{
sum1=yin(x);
sum2=yin(j);
if(sum1==j&&sum2==x)
printf("%d %d\n",x,j);
else
sum1=0;
sum2=0;
}
}
return 0;
}
int yin(int n)
{
int sum=0;
for(int i=1;iif(n%i==0)
sum=sum+i;
}
return sum;
}
需要5秒内完成,不知道怎么减少计算量。
把j的for循环去掉后在sum1=yin(i)后加一行j=sum1就行了
请问你目前的程序用时多少? 你的程序有输入输出,如何计算时间?
另外, 16 行下面的 else, 应该用 {} 扩起来吧?