/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:输出6~10000之间的亲密数对。说明:若(a,b)是亲密数对,则a的因子和等于b,
b的因子和等于a,且a不等于b。如(220,284)是一对亲密数对。
----------------
#include <stdio.h>
void wwjt();
//如果a存在亲密数b,返回b,否则返回0.
int isClose(int a)
{
int i,b=1,c=1;
/**********Program**********/
for(i=2;i<=a/2;i++)
if(a%i==0)
b+=i;
for(i=2;i<=b/2;i++)
if(b%i==0)
c+=i;
if(a==c&&a!=b) return b;
return 0;
/********** End **********/
}
main( )
{
int a,b=1;
for(a=6;a<=10000;a++)
{
if (isClose(a))
{
printf("%6d,%6d\n",a,isClose(a));
}
}
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
int j,a;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("Please Verify The Currernt Dir..It May Be Changed");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("Please Verify The Current Dir.. It May Be Changed");
}
for(j=0;j<16;j++)
{
fscanf(IN,"%d",&a);
//fscanf(IN,"%d",&b);
if (isClose(a))
{
fprintf(OUT,"%6d,%6d\n",a,isClose(a));
}
}
fclose(IN);
fclose(OUT);
}
---------------------------------------*/