前十个自然数的平方和与平方和之差

C++ Difference between the sum of the squares of the first ten natural numbers and the square of the sum

本文关键字:自然数 十个      更新时间:2023-10-16

我编写了一段代码,计算并输出前十个自然数的平方和与平方和之间的差。

问题是函数squareOfSum()。函数应该返回3025,但它总是返回3024。即使我试着把100放进括号里,我得到25502499(25502500是正确的)。不管我把什么数字放进括号里,我总是得到同样的问题。我做错了什么?

这是我输出的屏幕截图。

#include <iostream>
#include <cmath>
using namespace std;
int sumOfSquares(int limit);
int squareOfSum(int limit);
int main()
{
    cout << sumOfSquares(10) << endl;
    cout << squareOfSum(10) << endl;
    cout << squareOfSum(10) - sumOfSquares(10) << endl;
}
int sumOfSquares(int limit)
{
    int sum = 0;
    for(int i = 1; i<=limit; i++)
    {
        sum +=pow(i,2);
    }
    return sum;
}
int squareOfSum(int limit)
{
    int sum = 0, square = 0;
    for(int i = 1; i<=limit; i++)
    {
        sum +=i;
    }
    square = pow(sum,2);
    return square;
}

注意,pow是一个处理浮点数的函数。在隐式转换为int时,优化可能导致舍入错误或截断。将pow(i, 2)替换为i*i,您将得到纯整数运算,从而得到精确的结果。

#include <bits/stdc++.h> 
#include <algorithm> 
using namespace std;
int main()
{
int higher_limit = 100;
int SquaresOfSum = 0;
int SumOfSquares = 0,count=0;
for(int i=1;i<=higher_limit;i++){
    count += i;
    SumOfSquares += pow(i,2);
    }
SquaresOfSum = pow(count,2);
cout<<SquaresOfSum-SumOfSquares;
}

使用Javascript

const sumSquareDifference = (n) => {
  const numbers = [...Array(n + 1).keys()];
  const sumOfSquares = numbers.reduce((accumulator, number) => accumulator + (number ** 2));
  const squareOfSum = numbers.reduce((accumulator, number) => accumulator + number) ** 2;
  return squareOfSum - sumOfSquares;
}
console.log(sumSquareDifference(10));