1724 - 中级第六课——孪生数
时间限制 : 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; }