恳请网友帮忙,用c语言编写程序,求500以内的所有亲密数对.若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数.例如,6的因子之和为1+2+3=6,因此6与6

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 03:29:11

恳请网友帮忙,用c语言编写程序,求500以内的所有亲密数对.若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数.例如,6的因子之和为1+2+3=6,因此6与6
恳请网友帮忙,用c语言编写程序,求500以内的所有亲密数对.
若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数.例如,6的因子之和为1+2+3=6,因此6与6为一对亲密数(即6自身构成一对亲密数);又如,220的因子之和为l+2+4+5+10+11+20+22+44+55+110=284,而284的因子之和为1+2+4+71+142=220,因此,220与284为一对亲密数.编写程序,求500以内的所有亲密数对.(要求:求一个正整数的所有因子之和用函数实现)

恳请网友帮忙,用c语言编写程序,求500以内的所有亲密数对.若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数.例如,6的因子之和为1+2+3=6,因此6与6
#include
#include
#include
#define MAX_NUMBER 500
/*
本程序默认求500以内的亲密数
可以输入参数,求亲密数的范围:
假定程序名为 qinmi.exe
qinmi.exe 300 ==> 即求300以内亲密数
*/
typedef struct _INODE{
int data;
struct _INODE * next;
}INODE;
int TailInsert (INODE * head, int n)
{
INODE * t;
INODE * p;
if (head == NULL)
{
 return -1;
}
t = head;
while (t->next != NULL)
{
 t = t->next;
}
p = (INODE *) malloc(sizeof(INODE));
if (p == NULL)
{
 return -1;
}
t->next = p;
p->data = n;
p->next = NULL;
return 0;
}
INODE * QinMiShu(int n)
{
INODE * head = NULL;
int i;
if (n > 1)
{
head = (INODE *) malloc(sizeof(INODE));
head->data = n;
head->next = NULL;
 TailInsert(head, 1);
}
else
{
 return NULL;
}
for (i=2; i next;
while(t != NULL){
sum += t->data;
t = t->next;
}
return sum;
}
void FreeMem(INODE * head)
{
INODE * t;
while (head != NULL)
{
t = head;
 head = head->next;
free((void *)t);
}
}
int main(int argc, char * argv[])
{
int i, x;
int max = MAX_NUMBER;
INODE * head = NULL;
if (argc > 1)
{
max = atoi(argv[1]);
}
printf("Qingmi number in range: %d: \n", max);
for (i=1; i