刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

求完数

因子:因子也叫因数,例如3×5=15,那么3和5是15的因子。同时15×1=15,那么1和15也是15的因子。 1,3,5,15 这四个因子是15的所有因子。

完数:如果一个数等于不含它本身的其他因子之和,则称该数为‘完数’。如6的因子有1,2,3,6,且1+2+3= 6,因此6是完数。

题目描述

输入一个正整数N(0<N<10000),输出小于N的所有完数及小于N的完数个数(个数前加“*”,例如:*2)。

输入描述

输入一个正整数 N(O<N<10000 )

输出描述

输出小于 N 的所有完数及小于 N 的完数个数


样例输入 

100

样例输出 

6

28

*2

使用微信搜索喵呜刷题,轻松应对考试!

答案:

```#include #include using namespace std;vector getDivisors(int n) vector divisors;for (int i = 1; i <= n / 2; i++) {if (n % i == 0) {divisors.push_back(i);}}return divisors;int isPerfect(int n) vector divisors = getDivisors(n);int sum = 0;for (int i = 0; i < divisors.size(); i++) {if (divisors[i] != n) {sum += divisors[i];}}return sum == n ? 1 : 0;int main() int N;cin >> N;int count = 0;for (int i = 1; i < N; i++) {if (isPerfect(i)) {cout << i << endl;count++;}}cout << "*" << count << endl;return 0;```

解析:

【喵呜刷题小喵解析】:

这道题目要求输出小于N的所有完数及小于N的完数个数。

首先,我们需要编写两个函数,一个是获取一个数的所有因子,另一个是判断一个数是否为完数。

获取一个数的所有因子的函数`getDivisors`,通过遍历1到n/2,判断i是否为n的因子,如果是,则将其加入因子列表中。

判断一个数是否为完数的函数`isPerfect`,首先获取该数的所有因子,然后遍历因子列表,将除了该数本身以外的因子累加起来,如果和等于该数,则该数为完数,返回1,否则返回0。

在主函数中,我们输入一个正整数N,然后遍历1到N-1,判断每个数是否为完数,如果是,则输出该数,并统计完数的个数。最后输出完数的个数前加“*”。
创作类型:
原创

本文链接:求完数 因子:因子也叫因数,例如3×5=15,那么3和5是15的因子。同时15×1=15,那么1和1

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share