游客 Signup | Login
中文 | En

1724 - 中级第六课——孪生数

输出N以内的所有孪生数。孪生数定义:一个数的因子(本身除外)和等于其本身,那么这个数和它的因子和为一对孪生数。

例如:   220的因子和有1,2,4,5,10,11,20,22,44,55,110,   1+2+4+5+10+11+20+22+44+55+110=284,   284的因子和为220,那么220和284为一对孪生数。(因子不包括本身) 输入:数的范围N 输出:每行各输出一组孪生数,小的数在前,大的数在后。每个数占10个字符位置。如果没有结果,就输出“nothing” 例如: 输入:1 输出:nothing 

Input


Output


Examples

Input

1000

Output

220 284

Solution C++

#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int aff(int n)	//求因子和
{
	int t=sqrt(n),sum=1;
	for (int i=2; i<=t; i++)
		if (n%i==0) sum+=i+n/i;
	if (n==t*t) sum-=t;
	return sum;
}
int main()
{
	int n,flag=0;
	cin>>n;
	for (int i=2; i<=n; i++)
	{
		int a=aff(i);
		if (i!=a && i==aff(a))
		{
			cout<<i<<" "<<a<<endl;
			flag=1;
			break;
		}
	}
	if (!flag) cout<<"nothing"<<endl;
	return 0;
}
Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题