用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;
}
哪里不对啊? 展开
我的代码是:
#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;
}
哪里不对啊? 展开
1个回答
展开全部
/*
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询