21xrx.com
2024-11-22 10:57:01 Friday
登录
文章检索 我的文章 写文章
C++中如何求一个数的所有约数之和?
2023-06-26 22:04:57 深夜i     --     --
C++ 约数 求和

在C++中,要求一个数的所有约数之和,可以通过以下代码实现:

 c++

#include<iostream>

using namespace std;

int main()

{

  int num;

  cout<<"请输入一个要求约数之和的数字:"<<endl;

  cin>>num;

  int sum=0; //定义变量sum,并初始化为0

  for(int i=1;i<=num;i++)

  {

    if(num%i==0) //判断num是否能被i整除

    {

      sum+=i; //将能被整除的i累加到sum中

    }

  }

  cout<<"约数之和为:"<<sum<<endl; //输出约数之和

  return 0;

}

上述代码中,我们通过for循环从1开始遍历直到num,判断num是否能被当前循环变量i整除,如果可以整除则累加到变量sum中。最后输出sum即为所求的约数之和。

此外,我们也可以用更加简洁的代码来实现:

 c++

#include<iostream>

using namespace std;

int main()

{

  int num;

  cout<<"请输入一个要求约数之和的数字:"<<endl;

  cin>>num;

  int sum=0; //定义变量sum,并初始化为0

  for(int i=1;i<=num/2;i++) //优化:约数一定小于等于数的一半

  {

    if(num%i==0) //判断num是否能被i整除

    {

      sum+=i; //将能被整除的i累加到sum中

    }

  }

  sum+=num; //将num本身也计算在约数之和中

  cout<<"约数之和为:"<<sum<<endl; //输出约数之和

  return 0;

}

在优化后的代码中,我们通过约数一定小于等于数的一半来减少循环次数,从而提高程序的效率。同时,我们也将num本身也计算在约数之和中,避免遗漏。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复