题解 | #完全数计算#

完全数计算

http://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84

C++,可读性较高的思路。

#include <bits/stdc++.h>
using namespace std;

int main()
{

    int n;  //待输入的数
    while(cin>>n){
        int count=0;  //计数器
        //遍历从2到n的每一个数,并在下一层for计算是否为完全数
        for(int k=2;k<=n;k++)  
        {
            int sum=1;  //每个数都包含1这个因数
            for(int i=2;i<=k/2;i++) //除以2:根据题干推出的缩小i范围的方法
            {
                if(k%i==0)
                    sum=sum+i;
            }
            if(k==sum)
                count++;
        }
        cout<<count<<endl;
    }
    return 0;
}
全部评论
不太清楚k/2是怎么推导出来的????
1 回复 分享
发布于 2021-09-16 11:01
这个你可以参考分解质因数的那个题,k/2的目的是减少遍历的趟数。
点赞 回复 分享
发布于 2021-09-16 17:39
for(int i=2;i<=sqrt(k);i++) //除以2:根据题干推出的缩小i范围的方法 { if(k%i==0) sum=sum+i+k/i; }
点赞 回复 分享
发布于 2022-04-04 15:07

相关推荐

无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
评论
17
1
分享
牛客网
牛客企业服务