当前位置:首页>java>【每日编程-37期】AH上机题(二)

【每日编程-37期】AH上机题(二)

  • 2026-08-25 18:54:07
【每日编程-37期】AH上机题(二)
安徽大学上机题(二)

每日编程中遇到任何疑问、意见、建议请公众号留言或加入每日编程群聊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

最新文章

随机文章