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

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

输出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 

题目输入


题目输出


输入/输出样例

输入格式

1000

输出格式

220 284

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;
}