杭电OJ_2040(C++版)

#include 
using namespace std;

int SumDivisor(int n)
{
	int i,s=0;
		for(i=2;i*i<=n;++i)
		{
			if(n%i==0)
			{
				if(i*i!=n)
				{
					s+=i;
					s+=n/i;	
				}
				else
					s+=i;
			}	
		}	
	return (s+1);
 } 
int main()
{
	int n;
	cin>>n;
	while(n--)
	{
		int a,b,sa,sb;
		cin>>a>>b;
		sa=SumDivisor(a);
		sb=SumDivisor(b);
		if(sa==b&&sb==a)
			cout<<"YES"<

tips:一次ac啦。我这个求约数的函数写的有点长,不过也可以算是优化过的算法吧hhh。不用循环到n/2。

你可能感兴趣的:(OJ)