Pascal语言找2-1000中的亲密数对(A的因子和等于B,B的因子和等于A,且A<>B,则称A,B为亲密数对

急急急,求大神指点迷津... 急急急,求大神指点迷津 展开
 我来答
匿名用户
2015-09-05
展开全部

希望lz能看好我的代码,思路是:枚举i,j分别表示a,b的值,然后求出a,b的因子看是否符合要求,前提(a<>b),代码:

var
        i,j,k,a,b,tot:Longint;
begin
        for i:=4 to 1000 do
        begin
                a:=1;
                b:=1;
                for k:=2 to i-1 do        //您的题目描述不清楚,按照这个题目的要求,因子必须是不包含它本身,否则无解。
                        if i mod k=0 then inc(a,k);    //求出i的因子a
                for k:=2 to a-1 do
                        if a mod k=0 then inc(b,k);    //求出a的因子b
                if (a<>b) and (b=i) then 
                begin
                    writeln(i);     //判断条件
                    inc(tot);
                end;
        end;
        writeln('ans=',tot);
end.
//1000以内输出结果:
220
284
ans=2
//10000以内输出结果:
220
284
1184
1210
2620
2924
5020
5564
6232
6368
ans=10

代码和输出结果就是这样了,望采纳!不懂欢迎追问

FSQ2003_10_30
2015-09-05 · 超过13用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:16.7万
展开全部
var i,j,ans,ans2:integer;a:array[0..10000] of 0..1;
BEGIN
for i:=2 to 1000 do
if a[i]=0 then
begin
ans:=0;ans2:=0;
for j:=2 to i-1 do
if i mod j=0 then ans:=ans+j;
if (ans=i) then break;
for j:=2 to ans-1 do
if ans mod j=0 then ans2:=ans2+j;
if (ans2=i) then
begin
writeln(i,' ',ans);
a[i]:=1;
a[ans]:=1;
end;
end;
END.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式