首页 > 代码库 > 算法15---数论2---亲密数
算法15---数论2---亲密数
算法16---数论2---亲密数
如果整数a的因子和等于整数b,整数b的因子和等于整数a,因子包括1但不包括本身,且a不等于b,则称a和b为亲密数对。
1 /* 2 题目:亲密数 3 author taoliu——alex 2016.10 4 5 主要实现两种 6 1 判断两个数是不是亲密数。 7 2 找出一定范围内的亲密数。 8 9 */ 10 11 12 #include <stdio.h> 13 #include <stdlib.h> 14 15 int friendnum(int a,int b); 16 int factor_sum(int n); 17 void scope_friendnum(int scope); 18 19 //判断两个数是不是亲密数。 20 21 int friendnum(int a,int b) 22 { 23 if (a==b) 24 { 25 return -1; 26 } 27 int a_sum=0; 28 int b_sum=0; 29 a_sum=factor_sum(a); 30 b_sum=factor_sum(b); 31 //printf("the factor sum of %d is %d\n",a,a_sum); 32 //printf("the factor sum of %d is %d\n",b,b_sum); 33 if ((a_sum==b)&&(b_sum==a)) 34 { 35 return 1; 36 } 37 else 38 { 39 return 0; 40 } 41 42 } 43 44 int factor_sum(int n) 45 { 46 int sum=0; 47 for (int i = 1; i < n/2+1; i++) 48 { 49 if (n%i==0) 50 { 51 sum=sum+i; 52 } 53 } 54 return sum; 55 } 56 57 // 找出一定范围内的亲密数。 58 void scope_friendnum(int scope) 59 { 60 for (int i = 1; i < scope; i++) 61 { 62 for (int j = i; j < scope; j++) 63 { 64 int ans=friendnum(i,j); 65 if(ans==1) 66 printf("%d and %d is friendnum\n",i,j); 67 } 68 } 69 } 70 71 72 int main() 73 { 74 int judge; 75 int a,b,scope; 76 printf("what you want to do : 0 means judge two number is friendnum or not;\n"); 77 printf(" 1 means you want to find the friendnum in scope\n"); 78 //fflush(stdin); 79 scanf("%d",&judge); 80 if (judge==0) 81 { 82 printf("input two number you want to judge!\n"); 83 //fflush(stdin); 84 scanf("%d%d",&a,&b); 85 int ans=friendnum(a, b); 86 if (ans==1) 87 { 88 printf("%d and %d is friendnum\n",a,b); 89 } 90 if (ans==0) 91 { 92 printf("%d and %d is not friendnum\n",a,b); 93 } 94 else 95 printf("%d and %d is the same number ,error!\n", a,b); 96 } 97 if (judge==1) 98 { 99 printf("input the scope you want to find\n");100 //fflush(stdin);101 scanf("%d",&scope);102 scope_friendnum(scope);103 }104 return 0;105 }
算法15---数论2---亲密数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。