A41049. 亲密数
填空题
较易
知识点
题目描述
亲密数
题目描述
两个不同的自然数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。
输入格式
无
输出格式
3000以内的全部亲密数(输出格式:(A,B),不加换行,不加分隔符号)
一对亲密数只输出一次, 小的在前
样例输入
无
样例输出
(220,284)(1184,1210)(2620,2924)
参考答案
#include<stdio.h>
int all(int a)
{
int sum = 1;//计算包含1的所有因子之和
for(int i = 2; i < a; i++)
{
if(a % i == 0)
sum += i;
}
return sum;
}
int qingmi(int a,int b)//计算是否是亲密数
{
if(all(a) == b && all(b) == a)
{
if(a != b)
printf("(%d,%d)", a, b);
}
return 0;
}
int main()
{
for(int i = 3; i <= 3000; i++)//二次循环进行遍历
{
for(int j = 3; j <= 3000; j++)
{
if( i < j)
qingmi(i,j);
}
}
return 0;
}
上一题
下一题