早教吧 育儿知识 作业答案 考试题库 百科 知识分享

若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B.若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数.求10000

题目详情
若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B
.若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数.求10000以内的所有亲密数对.
例如,6的因子之和为1+2+3=6,因此6与6为一对亲密数(即6自身构成一对亲密数);
220的因子之和为1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 +55+110=284,而284的因子之和为1+2+4+71+142=220,因此,220与284为一对亲密数.
具体要求如下:
(1)编制一个函数facsum(n),返回给定正整数n的所有因子(包括1但不包括自身)之和.
(2)编制一个主函数,调用(1)中的函数facsum( ),寻找并输出10000以内的所有亲密数对.
(3)输出要有文字说明.在输出每对亲密数时,要求小数在前、大数在后,并去掉重复的数对.
#include
void main()
{
\x09int facsum(int n);
\x09int a, b, c;
\x09for (a = 1; a < 10001; a++)
\x09{
\x09\x09b = facsum(a);
\x09\x09c = facsum(b);
\x09\x09if (a == c || a >= b)
\x09\x09\x09printf("%d,%d\n", b, a);
\x09}
}
int facsum(int n)
{
\x09int d, e=0;
\x09for (d = 1; d < n; d++)
\x09{
\x09\x09if (n%d==0)
\x09\x09\x09e = e + d;
\x09}
\x09return(e);
}
求高手指导一下哪里错了?
▼优质解答
答案和解析
Private Sub form_Click()
Dim i As Integer,j As Integer,k As Integer
For i = 1 To 3000
j = facsum(i)
k = facsum(j)
If i = k And i < j Then Print i; j
Next i
End Sub
Function facsum(n As Integer) As Integer
Dim s As Integer
s = 0
For i = 1 To n \ 2
If n Mod i = 0 Then s = s + i
Next i
facsum = s
End Function
希望能解决您的问题.
看了 若正整数A的所有因子(包括1...的网友还看了以下: