本文主要是介绍Hust oj 1563 亲和数(打表),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
亲和数 | ||||||
| ||||||
Description | ||||||
亲和数是一种古老的数。 遥远的古代,人们发现某些自然数之间有特殊的关系:如果两个数a和b,a的所有真因数之和加上1等于b,b的所有真因数之和加上1等于a,则称a,b是一对亲和数。
据说,毕达哥拉斯(Pythagoras, 希腊文Πυθαγόρας,约前580年—前500年)的一个门徒向他提出这样一个问题:“我结交朋友时,存在着数的作用吗?”毕达哥拉斯毫不犹豫地回答:“朋友是你的灵魂的倩影,要象220和284一样亲密。”又说“什么叫朋友?就象这两个数,一个是你,另一个是我。”后来,毕氏学派宣传说:人之间讲友谊,数之间也有“相亲相爱”。从此,把220和284叫做“亲和数”或者叫“朋友数”或叫“相亲数”。这就是关于“亲和数”这个名称来源的传说。220和284是人类最早发现,又是最小的一对亲和数。
| ||||||
Output | ||||||
输出100000以内的所有亲和数。 从小到大输出,每行一对亲和数,中间用一个空格隔开。 比如这三对亲和数:
220 284 1184 1210 2620 2924 这样是按照从小到大的输出。 |
题赤裸裸的告诉打表了都。。照着做就好了
/*#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;
ll sum[1000000];
int main()
{memset(sum,0,sizeof(sum));for(int i=2;i<=100000;i++){for(int j=2;j<i;j++){if(i % j == 0)sum[i] += j;}}for(int i=0;i<=100000;i++){for(int j=0;j<=100000;j++){if(sum[i]+1 == j&&sum[j]+1 == i && i!=j){cout<<i<<' '<<j<<endl;}}}return 0;
}*/
#include<cstdio>
#include<iostream>
using namespace std;
int a[26]={220,284,1184,1210,2620,2924,5020,5564,6232,6368,10744,10856,12285,14595,17296,18416,63020,76084,66928,66992,67095,71145,69615,87633,79750,88730};
int main()
{int i,j;for(i=0;i<26;i+=2)printf("%d %d\n",a[i],a[i+1]);return 0;
}
这篇关于Hust oj 1563 亲和数(打表)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!