每日一练
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6 = 1 + 2 + 3。找出1000以内的所有完数?
拆解问题:
1、要知道一个数的因子都有哪些
2、因子求和
3、和与原数比较 是否相等
解决问题:
1、取余、循环
2、循环中拿出因子叠加
3、把加完的和与原数 判断
遇到的问题:
在双层循环中各种输出逻辑,拿到输出值之后思考为什么会这么输出,为什么没有得到想要的值,反复琢磨实现逻辑
代码:
#include<iostream>
using namespace std;
void get_number()
{
for (int num = 2; num <= 1000; num++)
{
int sum = 0;
for (int i = 1; i <= (num / 2); i++)
{
if (num % i == 0)
{
//cout << i <<" ";
sum += i;
//cout << sum << endl;
}
}
if (sum == num)
{
cout << sum << endl; //"(完数)==================================" << endl;
}
}
}
int main()
{
cout << "1000以内的完数有:" << endl;
get_number();
system("pause");
return 0;
}
OK,这就是今天的每日一练啦,前几日的每日一练有点忙,太瓜皮了,没咋做好,就暂时没有分享。下次一定!!!