Description
如果数a的真因子(即不包含该数本身的因子)之和等于b,而b的真因子之和等于a,而且a与b不相等,则称a和b是亲密数对。编程求指定范围内的亲密数对。
Input
输入有2个数lBound,uBound,两者均为不很大的正整数,且lBound<=uBound。
Output
输出[lBound,uBound]区间内的亲密数对。
如果有亲密数对,且有n个,则输出n行。每行的输出格式为"a<->b",且a<b。
如果没有亲密数对,则输出“No intimate numbers”。
Sample Input
1 1000
Sample Output
220<->284
题解
#include<stdio.h>
#include<math.h>
int getsum(int num){
int sum=0;
for (int j = 1; j<=num/2; j++){
if (num%j==0){
sum+=j;
}
}
return sum;
}
int main(){
int Min,Max;
int b;
short flag=0;
scanf("%d%d",&Min,&Max);
for (int i = Min; i <= Max; i++){
b=getsum(i);
if (b>Max){
break;
}
if (getsum(b)==i&&b!=i){
if (i<b){
printf("%d<->%d\n",i,b);
flag=1;
}
}
}
if (!flag){
puts("No intimate numbers");
}
return 0;
}