信息学奥赛一本通 1154:亲和数
【题目链接】ybt 1154:亲和数a<>b的意思是a不等于b【题目考点】1. 因子自然数a的因子是指能整除a的所有自然数,但不含a本身2. 函数【解题思路】设函数求一个数字的因子之和遍历【题解代码】解法1:...
·
【题目链接】
ybt 1154:亲和数
a<>b的意思是a不等于b
【题目考点】
1. 因子
自然数a的因子是指能整除a的所有自然数,但不含a本身
2. 函数
【解题思路】
设函数求一个数字的因子之和
从1开始遍历每个整数a,求其因子之和b,如果a不等于b且b的因子之和与a相同,则a是亲和数。
【题解代码】
解法1:
#include<bits/stdc++.h>
using namespace std;
//求数字n的因子之和
int sum(int n)
{
int s = 0;
for(int i = 1; i < n; ++i)
if(n % i == 0)
s += i;
return s;
}
int main()
{
int a, b;
for(int i = 2; true; ++i)
{
a = i;
b = sum(a);
if(a != b && a == sum(b))
{
if(a < b)//输出a和b,根据题目要求,先输出小的数字,再输出大的数字
cout << a << ' ' << b;
else
cout << b << ' ' << a;
break;
}
}
return 0;
}
更多推荐
所有评论(0)