您的位置:首页 > 其它

整数的约数和

2017-11-19 15:25 225 查看



题目描述
输入一个自然数x,求这个自然数的所有约数之和。x 属于int 范围内
输入格式: 一个整数 x,x在32位整数范围内。也就是说 x<=2^31
输出格式: x的所有约数和。 x的约数包括它本身。
之前我认为这种题目也太简单了,可谁知我竟然打了这么一个程序:
#include<bits/stdc++.h>

using namespacestd;

int main()

{

      long long x,a;

      a=0;

      cin>>x;

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

    {

            {

                  if(i!=x/i)

                  a=a+x/i;

            }

      }

      cout<<a;

      return 0;

}

本打算信心满满地提交,竟然连样例都过不了。后来我仔细看了看,检查了一下,不仅少了一个if语句,还离奇地少了开方这一回事,正确的代码如下:

#include<bits/stdc++.h>

using namespacestd;

int main()

{

      long long x,a;

      a=0;

      cin>>x;

      for(int i=1;i<=sqrt(x)*1;i++)

      {

            if(x%i==0)

            {

                  a=a+i;

                  if(i!=x/i)

                  a=a+x/i;

            }

      }

      cout<<a;

      return 0;

}

这使我懂得了必须得仔细、细心,不能因为这是一道简单的题就小瞧它,再简单的题也会有坑的呢!

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  x 32位
相关文章推荐