2 条题解

  • 0
    @ 2026-5-19 22:06:16

    由于题目说完数就是一个数的因数(不包括1和本身),最小完数已知是六,所以可以直接从6到n进行for循环(切记,每次的i都需要一个sum,所以需要在for里面定义sum)。在这个循环中,我们列举从1到n的所有数来判断j是不是i的因数,如果是就用sum累加,最后判断sum的值,如果是就输出i(判断需要在外层循环里,内层循环外)

    代码如下:

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
    	int n;
        cin>>n;
        for(int i=6;i<=n;i++)
        {
            int sum=0;
            for(int j=1;j<i;j++)
            {
                if(i%j==0)
                {
                    sum+=j; 
                }
            }
            if(sum==i)
            {
                cout<<i<<" ";
            }
    
    
        }
    
        return 0;
    }
    

    信息

    ID
    182
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    (无)
    递交数
    39
    已通过
    26
    上传者