编程训练题:亲和数
#include<stdio.h>
int main()
{
// M为行数;A、B对应整数A、B;
int M,A,B;
// 输入要进行比较的亲和数的行数
scanf("%d\n",&M);
// 循环M次
for(int i=1;i<=M;i++)
{
// 先放置两个个空的整数容器(用于求和)
int sum1=0,sum2=0;
// 输入要进行比较的整数A、B
scanf("%d %d\n",&A,&B);
// 用于限制整数A、B的大小
if(A<600000 & B<600000)
{
// 找出整数A所有的真约数并求和
for(int j=1;j<A;j++)
{
if(A%j==0) sum1+=j;
}
// 找出整数B所有的真约数并求和
for(int j=1;j<B;j++)
{
if(B%j==0) sum2+=j;
}
// 判断真约数之和是否相等,若是则返回“YES”,否则返回“NO”
if(sum1==B&&sum2==A)
printf("YES\n");
else printf("NO\n");
}
else printf("输入的整数A、B过大!");
}
return 0;
}
运行结果:
在得到第一个结果之后,要输入“ctrl”+“z”,然后回车,即可得到第二个结果。