解题思路:双层循环:第一层循环执行1-N的递增,第二层循环计算某个值的所有因子
注意事项:第二层循环的循环判定条件
参考代码:
#include <iostream>
using namespace std;
int main(){
int n ,sum;
cin >> n;
for(int i =2 ;i<=n;i++){ //2-n遍历
int *p =new int [i]; //建立数组
for(int m =0; m<i;m++)
p[m] = 0 ; //数组初值为0
for(int j =1;j<=i/2;j++){ //从1至i/2遍历因子
if(i % j == 0){ //判断整除
p[j-1] = j; //因子存入数组
sum += j; //sum等于因子的累加值
}
}
if(sum == i){ //判断完数
cout << i << " its factors are ";
for(int k =0;k<i;k++){
if(p[k] !=0)
cout << p[k]<< " "; //输出所有因子
}
cout << endl;
}
delete[]p; //删除数组
sum =0; //sum归零
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复