用c语言写:如果a的因子和等于b,b的因子和等于a,且a≠b,则称a,b为亲密数对。

比如220的所有真约数(即不是自身的约数)之和为:1+2+4+5+10+11+20+22+44+55+110=284。284的所有真约数和为:1+2+4+71+142=2... 比如220的所有真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284。 284的所有真约数和为: 1+2+4+71+142=220。 你的任务就编写一个程序,判断给定的两个数是否是亲和数
我的代码是:
#include<stdio.h>
int main()
{
int a ,i,j, k,sum1,sum2,b,c;
while(scanf("%d",&a)!=EOF)
{ sum1 = 0;
sum2 = 0;
for(i=0;i<a;i++)
{
scanf("%d%d",&b,&c);

for(j = 1; j<=b/2; j++)
{
if (b % j==0)
sum1+=j;
}

for(k = 1; k<=c/2; k++)
{
if (c%k==0)
sum2+=k;
}

if(sum1 == c && sum2==b)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
}
return 0;
}
哪里不对啊?
展开
 我来答
xoaxa
2014-03-21 · TA获得超过8609个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3466万
展开全部

/*

1

284 220

YES

Press any key to continue

*/

#include <stdio.h>
int main() {
int T,i,sum1,sum2,b,c;
scanf("%d",&T);
while(T--) {
scanf("%d%d",&b,&c);
sum1 = 0;
sum2 = 0;
for(i = 1; i <= b/2; i++)
if(b % i == 0) sum1 += i;
for(i = 1; i <= c/2; i++)
if(c % i == 0) sum2 += i;
if(sum1 == c && sum2 == b)
printf("YES\n");
else printf("NO\n");
}
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式