信息学奥赛一本通 1150:求正整数2和n之间的完全数
生活随笔
收集整理的这篇文章主要介绍了
信息学奥赛一本通 1150:求正整数2和n之间的完全数
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
【题目链接】
ybt 1150:求正整数2和n之间的完全数
【题目考点】
1.因数、因子
因数(因子)是指整数a除以整数b(b≠0) 的商正好是整数而没有余数,我们就说b是a的因数。
因数包括这个数本身而不包括因子。
【解题思路】
设一个函数,功能为求一个数的因子之和。方法如下:
设数字为a,遍历1到小于a的所有数字,将a能整除a的数字(a的因子)加和,返回加和。
主函数中:遍历2~n的每个整数,判断这个数与其因子加和是否相等,是则输出。
【题解代码】
解法1:使用函数
#include<bits/stdc++.h> using namespace std; //求数字n的因子之和 本题的因子不包括n本身。 int sumOfFactor(int n) {int s = 0;//加和 for(int i = 1; i < n; ++i)//注意:n的因子不包括n if(n % i == 0)//如果i是n的因子 s += i;return s; } int main() {int n;cin >> n;for(int i = 2; i <= n; ++i)if(sumOfFactor(i) == i)cout << i << endl;return 0; }解法2:不用函数
#include<bits/stdc++.h> using namespace std; int main() {int n;cin >> n;for(int i = 2; i <= n; ++i){int s = 0;for(int j = 1; j < i; ++j)if(i % j == 0)s += j;if(s == i)cout << i << endl;}return 0; }总结
以上是生活随笔为你收集整理的信息学奥赛一本通 1150:求正整数2和n之间的完全数的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: java 聚合函数_如何使用Java流计
- 下一篇: 减速箱箱体尺寸是怎样计算的_减速箱的结构