【问题标题】:Finding Divisors using loops使用循环查找除数
【发布时间】:2014-01-07 17:05:27
【问题描述】:

我为以下程序编写了代码,但我不明白如何涉及函数。这个问题要求我使用一个返回除数总和的函数。请查看问题和我的代码并尝试帮助我。

问题:

编写一个 C 程序,找到并打印所有除数之和 101 到 110 之间的数字。x 的除数是这些数字 x 除数没有余数(例如,数字 10 的除数是 1, 2, 5, 10 和它们的和 = 1+2+5+10=18, 数字 11 的除数 是 1 和 11,它们的和=1+11=12,以此类推)。 您的程序还应该打印除数之和最大的数字(101 到 110)。

您的程序应至少使用一个名为 div_sum 的函数 接受一个数字并返回其除数之和。

我的代码:

#include <iostream>
#include <stdio.h>


int main()

{
int i=1, x=101, sum, smax=0, xmax=0;

    for (x=101; x<=110; x++)
        {  sum=0;

           for(i=1; i<=x; i++)
               {
                  if(x%i==0)
                  sum+=i;
               }

           if(sum>smax)
               {
                  smax=sum;
                  xmax=x;
               }

           printf("The sum of factors of %d = %d\n",x,sum);

        }

    printf("The number that has the maximum sum of divisors is %d with the sum of %d",xmax,smax);

    return 0;
}

【问题讨论】:

  • 代码看起来不错,除了你没有使用函数div_sum

标签: c


【解决方案1】:

您可以将计算每个 x 的除数总和的循环移动到单独的函数:

int div_sum(int x) {
    int sum = 0;
    for(int i=1; i<=x; i++)
    {
        if(x%i==0)
        sum+=i;
    }
    return sum;
}

并在你的程序中使用它:

for (x=101; x<=110; x++)
{  
   sum= div_sum(x);
   if(sum > amax)
   ...
}

【讨论】:

    【解决方案2】:

    对于循环中的每个数字,调用该函数。该函数应该包含您当前在循环中的所有代码。

    【讨论】:

      【解决方案3】:

      您的代码实际上非常接近。

      这就是我所做的:

      void div_sum()
      {        
      
          int sum;
          int max_sum = 0;
          int max_num;
      
          for (int x = 101; x <= 110; x++)
          {
              sum = 0;
              for (int i = 1; i <= x; i++)
              if (x%i == 0)
                  sum = sum + i;
      
              printf("\nFor the number %d, the sum of the divisors is %d\n", x, sum);         
              if (sum > max_sum)
              {
                  max_sum = sum;
                  max_num = x;
              }
          }
          printf("max = %d\n", max_num);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-12
        • 2021-12-10
        • 2020-05-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多