编程训练题:亲和数

#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”,然后回车,即可得到第二个结果。

posted @ 2022-05-28 00:13  tiansz  阅读(38)  评论(0编辑  收藏  举报