21xrx.com
2025-03-31 00:54:40 Monday
文章检索 我的文章 写文章
C++中如何求一个数的所有约数之和?
2023-06-26 22:04:57 深夜i     15     0
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本身也计算在约数之和中,避免遗漏。

  
  

评论区

请求出错了