解题思路:
构建两层循环
第一层循环n范围内的数
第二层循环
从1开始 将能够整除的数进行存储并将其求和
然后 进行完数的判断 输出
注意事项:
数组定义大小要足够大,在每次执行完第二层循环时进行sum和k的初始化!!重点
参考代码:
#include<bits/stdc++.h>
using namespace std;
void wanshu( int n)
{
int sum = 0, arr[200] , k = 0;
for (int i = 6; i <= n; i++)
{
for (int j = 1; j < i; j++)
{
if (i % j == 0)//整除判断
{
sum += j;
arr[k] = j;
k++;
}
}
if (sum == i)//完数判断
{
cout << sum<<" its factors are ";
for (int b = 0; b < k; b++)
cout << arr[b]<<" ";
cout << endl;
}
sum = 0;
k = 0;//初始化 使第一层最初进行循环时 保持sum和k的值为0
}
}
int main()
{
int a;
cin >> a;
wanshu(a);
return 0;
}
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复