2 条题解

  • 1
    @ 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;
    }
    
    
    • 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;
      }
      
      • 1

      信息

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