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;
    }
    
    • 0
      @ 2025-7-30 17:55:47
      #include <iostream>
      #include <cstdio>
      using namespace std;
      int main()
      {
          int n;
          cin>>n;
          if(n>=8128)
          {
              cout<<6<<' '<<28<<' '<<496<<' '<<8128;
              return 0;
          }
          if(n>=496)
          {
              cout<<6<<' '<<28<<' '<<496;
              return 0;
          }
          if(n>=28)
          {
              cout<<6<<' '<<28;
              return 0;
          }
          if(n>=6)
          {
              cout<<6;
              return 0;
          }
          return 0;
      }
      
      
      • 1

      信息

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