解题思路:
构建两层循环
第一层循环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语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:715 |
永远的丰碑 (C语言代码)浏览:643 |
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:624 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:1232 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:703 |
【计算球体积】 (C语言代码)浏览:1101 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:262 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:560 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:606 |
时间转换 (C语言代码)浏览:623 |