首页 > 代码库 > 算法15---数论1---完全数
算法15---数论1---完全数
算法15---数论1---完全数
完全数是一些特殊的自然整数。完全数等于其所有因子之和。所谓因子是所有的可以整除这个数的数,而不包括这个数本身。
一些完全数的概念
(1)亏数:当一个自然数的所有因子之和小于该自然数,那么该自然数便是亏数;
(2)盈数:当一个自然数的所有因子之和大于该自然数,那么该自然数便是盈数;
(3)完全数:当一个自然数的所有因子之和等于该自然数,那么该自然数便是完全数;
相关的结论
1 每一个完全数都可以表示成连续自然数之和
2 每个完全数都是调和数;
若一个正整数n的所有因子的调和平均是整数,n便称为调和数(Harmonic number)。它又称欧尔数(Ore number)。
3 每一个完全数都可以表示为2的一些连续正整数次幂之和。
如:6=2+2²
4 已知的完全数都是以6或者8结尾。
5 除6以外的完全数都可以表示成连续奇立方之和。
如:28=1³+3³;
完全数的实现如下
1 /* 2 题目:完全数 3 author taoliu——alex 2016.10 4 5 */ 6 7 8 #include <stdio.h> 9 10 11 void perfectnum(int n)12 {13 14 int perfect[100]={0};15 int sum=0;16 for (int i = 1; i < n; i++)17 {18 if (n%i==0)19 {20 perfect[i]=i;21 sum=sum+i;22 }23 }24 if (sum==n)25 {26 printf("the number %d is perfect number!\n",n);27 printf("the number %d is made up as follow!\n",n);28 for (int i = 0; i < 100; i++)29 {30 if (perfect[i]!=0)31 {32 printf("%d ", perfect[i]);33 }34 }35 36 }37 //else38 // printf("%d is not perfect number!\n",n );39 40 41 }42 43 int main()44 {45 46 47 //可以输入你想要判断的数字48 /*49 int n;50 printf("please input the number you want to judge! \n");51 scanf("%d",&n);52 perfectnum(n);53 */54 //也可以输出在某一范围内的所有完全数55 printf("please input the scope you want to find! \n");56 int scope;57 scanf("%d",&scope);58 59 for (int i = 1; i < scope; ++i)60 {61 perfectnum(i);62 }63 return 0;64 65 }
算法15---数论1---完全数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。