16 条题解

  • 17
    @ 2022-8-18 13:19:46

    今天这一道题是函数问题,主要考察的是完全数如何来求

    1. 首先从 n ~ m 每一个数都遍历一次(包括 n和m)
    2. 紧接着可以遍历从 1 开始,到 n - 1 的所有数(因为完全数的约数和不包括本身)
    3. 紧接着就是判断能否将 i(外循环变量)整除 j (内循环变量)
    4. 如果能整除就将总数 sum 加上这个约数
    5. 此外,要记得每一次执行完了以后都要将 sum 归零哦~

    OK,上代码吧~(AC通过)

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n, m;
        cin >> n >> m;
        for (int i = n; i <= m; i++)
        {
            int sum = 0;
            for (int j = 1; j <= i - 1; j++)
            {
                if (i % j == 0) sum += j;
            }
            if (sum == i) cout << i << " ";
        }
        return 0;
    }
    
    • 5
      @ 2022-9-11 16:26:32
      1. 先定义一个完全数(完美数)函数

      2. 从 n ~ m 每一个数都遍历一次(包括 n和m)

      3. 紧接着可以遍历从 1 开始,到 n - 1 的所有数(因为完全数的约数和不包括本身)

      4. 如果能整除就输出i

        此外,要记得每一次执行完了以后都要输出空格哦~


      AC过,请放心食用

      #include <iostream>
      using namespace std;
      bool check(int x)
      {
          int m=0;
          bool n=false;
      	for (int i=1;i<x;i++)
          {
              if (x%i==0)
              {
                  m+=i;
              }
          }
          if (x==m)
          {
              n=true;
          }
      	return n;
      }
      int main()
      {
      	int x, y;
      	cin>>x>>y;
          for (int i=x;i<=y;i++)
          {
              if (check(i))
          	{
      	    	cout<<i<<' ';
      	    }
          }
          return 0;
      }
      
      • 3
        @ 2024-2-3 17:27:59

        写函数,不迷路!

        #include <iostream>
        using namespace std;
        int perfect(int x)
        {
            int sum = 0;
            for (int i = 1; i <= x - 1; i++)
            {
                if (x % i == 0)
                {
                    sum += i;
                }
            }
            if (sum == x)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        int main()
        {
            int m, n;
            cin >> m >> n;
            for (int i = m; i <= n; i++)
            {
                if (perfect(i))
                {
                    cout << i << " ";
                }
            }
            return 0;
        }
        
        • 3
          @ 2022-5-20 20:28:39

          要输出m和n范围内的完美数,用for循环从m到n进行遍历,每个数去判断它是否是完美数,如果是完美数,就输出,不是,就跳过。

          for(int i=m;i<=n;i++)
          {
          	//判断该数是否为完美数,若是,则输出;不是,则继续循环
          }
          

          接下来重点是要判断完美数

          一个数所有真约数的和正好等于这个数,通常把这个数叫做完美数

          那我们主要就判断一下这个数的真约数有哪些,把真约数累加起来就是约数和,约数和如果等于该数,则为完美数。

          遍历1~i-1范围内的数,看i对当前数取余是否为0,若为0,则为真约数,累加到约数和中即可,不遍历到n是因为完全数不包括自身这个约数。

          int sum = 0;  //sum用来存放该数的约数和
          for (int j = 1; j < i ; j++) //遍历1~i-1范围内的数,不遍历到n是因为完全数不包括自身这个约数
          {
          	if (i % j == 0) //如果当前数i对j取余等于0,表示该数是i的一个约数
              {
              	sum += j;
              }
          }
          if (sum == i) //循环结束后,如果sum和i相等,则该数为完美数,输出
          {
                cout << i << " ";
          }
          
          • 2
            @ 2024-2-1 16:57:04

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

            • 1
              @ 2024-5-2 15:56:07

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

              • 1
                @ 2023-10-21 20:35:28
                #include <bits/stdc++.h> 
                using namespace std;
                int main()
                {
                    int n, m, sum = 0;
                    cin >> m >> n;
                    for(int i = m; i <= n; i++)
                    {
                        sum = 0;
                        for(int j = 1; j < i; j++)
                        {
                            if(i % j == 0)
                            {
                                sum += j;
                            }
                        }
                        if(sum == i)
                        {
                            cout << i << " "; 
                        }
                    }
                    return 0;
                }
                
                • 1
                  @ 2023-8-10 20:05:29
                  #include <bits/stdc++.h>
                  using namespace std;
                  int main()
                  {
                      int n, m;
                      cin >> n >> m;
                      for (int i = n; i <= m; i++)
                      {
                          int sum = 0;
                          for (int j = 1; j <= i - 1; j++)
                          {
                              if (i % j == 0) sum += j;
                          }
                          if (sum == i) cout << i << " ";
                      }
                      return 0;
                  }
                  
                  • 0
                    @ 2023-8-22 16:22:40

                    过辣!

                        long long m,n;
                        cin>>m>>n;
                        for (int i=m;i<=n;i++)
                        {
                            int sum=0;
                            for (int j=1;j<i;j++)
                            {
                                if (i%j==0)
                                {
                                    sum+=j;
                                }
                            }
                            if (sum==i)
                            {
                                cout<<i<<" ";
                            }
                        }
                    
                    • 0
                      @ 2023-7-22 15:24:21
                      #include <cstdio>
                      using namespace std;
                      bool perfect(int x){
                          int sum=0;
                          for(int i=1;i<x;i++)if(x%i==0)sum+=i;
                          return sum==x;
                      }
                      int main(){
                          int m,n;
                          scanf("%d%d",&m,&n);
                          for(int i=m;i<=n;i++)if(perfect(i))printf("%d%c",i,' ');
                          return 0;
                      }
                      
                      • 0
                        @ 2023-5-28 13:46:26
                        #include<iostream>
                        using namespace std;
                        int f(int n)
                        {
                            int sum=0;
                            for(int i=1;i<=n-1;i++)
                            {
                                if(n%i==0)
                                {
                                    sum+=i;
                                }
                            }
                            if(sum==n)
                            {
                                return 0;
                            }
                            else
                            {
                                return 1;
                            }
                        }
                        int main()
                        {
                            int a,b;
                            cin>>a>>b;
                            for(int i=a;i<=b;i++)
                            {
                                if(f(i)==0)
                                {
                                    cout << i << " ";
                                }
                            }
                            return 0;
                        } 
                        
                        
                        • 0
                          @ 2023-4-22 21:13:46

                          时间复杂度偏高,但在题目数值内绰绰有余。

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

                          套两层循环,只要是j的因数就加到sum里去,最后判断j与sum是否相等即可

                          • 0
                            @ 2023-4-3 19:59:16
                            #include <iostream>
                            using namespace std;
                            int main()
                            {
                                int m, n;
                                cin >> m >> n;
                                for (int i = m; i <= n; i++)
                                {
                                    int sum = 0;
                                    for (int j = 1; j < i; j++)
                                    {
                                        if (i % j == 0)
                                        {
                                            sum += j;
                                        }
                                    }
                                    if (i == sum)
                                    {
                                        cout << i << " ";
                                    }
                                }
                                return 0;
                            }
                            
                            • 0
                              @ 2023-3-19 16:00:31
                              
                              

                              #include<iostream> using namespace std; int main(){ int m,n; int sum=0; cin>>m>>n; for(int i=m;i<=n;i++){ for(int j=1;j<i;j++){ if(i%j0){ sum+=j; } } if(sumi){ cout<<i<<" "; } sum=0; } return 0; }

                              
                              
                              • 0
                                @ 2022-11-6 21:08:00
                                #include <iostream>//hetao3097453
                                using namespace std;
                                bool wanmei(int n)
                                {
                                    int num = 0;
                                    for(int i = 1;i <= n;i++)
                                    {
                                        if(n % i == 0)
                                        {
                                            num += i;
                                        }
                                    }
                                    num -= n;
                                    if(num == n)
                                    {
                                        return true;
                                    }
                                    else
                                    {
                                        return false;
                                    }
                                }
                                int main()
                                {
                                    int n,m;
                                    cin >> n >> m;
                                    for(int i = n;i <= m;i++)
                                    {
                                        if(wanmei(i))
                                        {
                                            cout << i << " ";
                                        }
                                    }
                                    cout << endl;
                                    return 0;
                                }
                                
                                
                                • -3
                                  @ 2022-4-24 16:03:23

                                  鼓励大家写题解,但注意题解格式。

                                  给代码两端加上这个会舒服一些

                                  ```cpp

                                  你的代码

                                  ```

                                  </span>

                                  这个点在键盘的左上角tab上面那个键,注意切换输入法

                                  #include<iostream>
                                  using namespace std;
                                  int main()
                                  {
                                      int n;
                                      cin>>n;//这是一个注释
                                      return 0;
                                  } 
                                  

                                  请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。

                                  抄袭题解一经发现直接取消成绩。

                                  • 1

                                  【入门】输出m和n范围内的完全数(完美数)

                                  信息

                                  ID
                                  136
                                  时间
                                  1000ms
                                  内存
                                  16MiB
                                  难度
                                  3
                                  标签
                                  递交数
                                  1608
                                  已通过
                                  838
                                  上传者