题意描述:
输入两个正整数m和n,顺序输出m到n之间的所有友好数对。
如果两个整数的所有正因子之和(包括1,不包括自身)等于对方,就称这对数是友好的。例如:1184和1210是友好数对
解题思路:
编写函数计算出m-n每个整数的所有正因子之和,然后利用函数算出该因子和的因子和是否等于该数本身,输出原整数与其因子和。
代码实现:
1 #include<stdio.h> 2 int facsum(int n) 3 { 4 int i,sum=0; 5 for(i=1;i<n;i++) 6 { 7 if(n%i==0)sum+=i; 8 } 9 return sum; 10 } 11 int main() 12 { 13 int m,n,i,k=0,find=0,t=0; 14 scanf("%d%d",&m,&n); 15 for(i=m;i<=n;i++) 16 { 17 t=facsum(i); 18 if(facsum(t)==i&&t>i) 19 { 20 find=1; 21 printf("%d %d\n",i,t); 22 } 23 } 24 if(find==0)printf("No answer\n"); 25 return 0; 26 }
易错分析:
没有准确理解数组应用,和友好数对的真正含义,大费周章,造成了不必要的杂乱。
原文地址:https://www.cnblogs.com/yuanqingwen/p/10351758.html
时间: 2024-11-11 22:19:04