每日编程中遇到任何疑问、意见、建议请公众号留言或加入每日编程群聊739635399
找出1000之内的所有完数,并输出完数和它的所有因子(一个数恰好等于他的因子之和,称为完数,例如:6=1+2+3)。
输出样例:
6 28 496
解决方法:
(1)算法的基本思想:
要点在于如何判断一个数是否是完数。首先,我们需要找出所有的因子,然后将因子累加求和看是否等于原数。假设某个数num,那么num的所有因子可能的范围是[1,num/2],(注意:是可能取到num/2的,写循环时要注意边界),每找到一个因子,累加计入和中,最后判断和是否和原数相等,相等则为完数。
(2)代码实现:
#includeusingnamespacestd;boolisPerfectNum(int n); //判断一个数是否是完数intmain(void){cout << "1000以内的所有完数:" << endl;for (int i = 1; i < 1000; i++) {if (isPerfectNum(i)) {cout << i << " "; } }cout << endl;return0;}boolisPerfectNum(int n){bool isPerfect = false;int sum = 0; //累加因子求和for (int i = 1; i <= n / 2; i++) {if (n % i == 0) { sum += i; } }if (sum == n) { isPerfect = true; }return isPerfect;}
由键盘输入一行仅由英文字母及空格组成的字符,编程实现(相邻单词之间用一个空格或多个空格隔开)。
(1)输出每个单词及其长度。
(2)输出最长的单词。
输入样例:
I am a boy
输出样例:
I 1am 2a 1boy 3
