我改了一下,用的是1200,6000时间运行长了。
#include "iostream.h"
#include "iomanip.h"
void main ()
{
int x,m,sum1=1,sum2=1,y,n
cout<<"The friendly-numbers pair: "<<endl
for (x=2x<=1220x++)
{
sum1=1
for (m=2m<=x/2m++)
if (x%m==0)
sum1=sum1+m
for (y=x+1y<=1220y++)
{
sum2=1
for (n=2n<=y/2n++)
if (y%n==0)
sum2=sum2+n
if (x==sum2 &&y==sum1)
cout<<setw(5)<<x<<"--"<<y<<endl
}
}
}
而且我把求x的真因素提到了外面,可以节省些时间,不必每次求一次x的真因素,再求y的真因素。
结果:
220——284
1184——1210
二楼有一点错误,改一下 if(y==n&&x<y) printf("%d %d\n",y,x)vc2008
// 亲和数.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
void main()
{
unsigned long a,b
unsigned long n
unsigned long x,y
unsigned long i
scanf("%ld%ld",&a,&b)
for(n=an<=bn++)
{
x=0
for(i=1i<=n/2i++)
{
if(n%i==0) x+=i
}
y=0
for(i=1i<=x/2i++)
{
if(x%i==0) y+=i
}
if(y==n&&x<y) printf("%d %d\n",y,x)
}
while(1)
}