一道pascal题目

所谓亲密数对是指:A的因子和等于B,而B的因子和正好等于A,且A<>B,则称A,B为亲密数对。例如284和220,220的因子有1,2,4,5,11,20,22,44,5... 所谓亲密数对是指:A的因子和等于B,而B的因子和正好等于A,且A <>B,则 称A,B为亲密数对。例如284和220,220的因子有1,2,4,5,11,20,22,44,55,110,他们和为284,284的因子有1,2,4,71,112,他们和为220。
注意:这里的因子是指除去本身之外所有的因子(包括1这个因子)。
展开
 我来答
jiangyuhang331
2012-02-28
知道答主
回答量:4
采纳率:0%
帮助的人:3.3万
展开全部
给你核心代码吧,这是判断两个数是否是亲密数对的函数:

function main(a,b : longint) : boolean;
var
i,s1,s2 : longint;
begin
if (a = b) then
exit(false);
s1 := 0;
s2 := 0;
for i := 1 to a-1 do
if (a mod i) = 0 then
inc(s1,i);
for i := 1 to b-1 do
if (b mod i) = 0 then
inc(s2,i);
if (s1 = b)and(s2 = a) then
exit(true);
exit(false);
end;
nlxmmc
2012-02-28 · TA获得超过207个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:192万
展开全部
var a,b,tota,totb,i:longint;
begin
readln(a,b);
tota:=0;totb:=0;
for i:=1 to trunc(sqrt(a)) do
begin
if a mod i=0 then inc(tota,i);
if a mod (a div i)=0 then inc(tota,a div i);
if i*i=a then dec(tota,i);
end;
for i:=1 to trunc(sqrt(b)) do
begin
if b mod i=0 then inc(totb,i);
if b mod (b div i)=0 then inc(totb,b div i);
if i*i=b then dec(totb,i);
end;
if(tota=b)and(totb=a)then writeln('YES') else writeln('NO');
end.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wjh1079946368
2012-03-01
知道答主
回答量:7
采纳率:0%
帮助的人:11.3万
展开全部
var
i,n,m,t,tt:longint;
begin
read(n,m);
tt:=0;
t:=0;
for i:=1 to n-1 do
if n mod i=0 then t:=t+i;
for i:=1 to m-1 do
if m mod i=0 then tt:=tt+i;
if (t=m)and(tt=n) then write('yes') else write('no');
end.
追问
是打印出亲密数对的个数和他们是多少
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式