soulwyb 发表于 2018-4-18 07:13:42

#计算平方和
def e2s(n):
    sum = 0
    for i in range(n+1):
      sum += i*i
    return sum
   
#计算和平方
def sume2(n):
    sum = 0
    for i in range(n + 1):
      sum += i
    return sum *sum

s = e2s(100) - sume2(100)
print("100个自然数的平方和与和平方的差是%d" % s )

soulwyb 发表于 2018-4-18 07:21:32

看完大神的代码 再优化下:
def square(n):
    sum1,sum2 = 0,0
    for i in range(n+1):
      sum1 += i*i
      sum2 += i
    return sum2*sum2 - sum1
print "100个自然数的平方和与和平方的差是%d" % square(100)

名字有点夸张 发表于 2018-7-17 16:45:09

#include <cstdio>
#include <cmath>
#include <cstdlib>
#define N 100

int main(int argc, char * argv[])
{
        long long int SumSquares = 0;
        long long int SquaresSum = 0;
        long long int temp;
        temp = N * (N + 1) / 2;
        SumSquares = temp * temp;
        SquaresSum = N * (N + 1) * (2 * N + 1) / 6;
        printf("value = %llu", abs(SumSquares - SquaresSum));

        fputc('\n', stdout);
        system("pause");
        return 0;
}

结果为25164150

塔利班 发表于 2018-8-23 17:43:47

print(sum(range(1,101))**2-sum())

shanczp 发表于 2018-10-11 08:36:50

#include<stdio.h>


int main (void)
{
   
    long i=0;
    int num=0;
    int sum;
    for(;i<=100;i++)
    {
      num=num+i*i;
      sum=sum+i;
    }
    int n=sum*sum;
    printf("%d",n-num);
    return 0;
}

山有扶苏啊 发表于 2018-10-12 13:17:18

i = 1
t = 0
while i <= 100:
    t += i**2
    i += 1

print((101*50)**2 - t)

Big_甲鱼 发表于 2018-10-14 21:32:44

#第6题
#题目:
#前十个自然数的平方和是:
#1**2 + 2**2 + ... + 10**2 = 385
#前十个自然数的和的平方是:
#(1 + 2 + ... + 10)**2 = 552 = 3025
#所以平方和与和的平方的差是 3025 − 385 = 2640。
#找出前一百个自然数的平方和与和平方的差。
a=int(input('请输入求1~n平方和与和平方的差的数n:'))
#先求平方和
sum_of_square=0
for i1 in range(1,a+1):
    sum_of_square+=i1**2
#再求和的平方
square_of_sum=0
for i2 in range(1,a+1):
    square_of_sum+=i2
square_of_sum=square_of_sum**2
#最后结果
result=square_of_sum-sum_of_square
print('前{}个自然数的平方和与和平方的差是{}'.format(a,result))
看来离入门还差一步啊,别人都是一句就能完成的代码

何小胖胖 发表于 2019-2-19 21:06:53

对于和的平方,用for循环是O(n),换个方法就是O(1),而计算平方的和就用了常规方法for循环计算,不过好像在求极限中有其他办法?总之本来复杂度是O(2n),修改了和的平方后就是O(n)了
#include<iostream>
using namespace std;
#define N 100
int main(){
        int sum1=0,sum2=0;
        //计算和的平方
        sum1=(N+1)*(N/2);
        sum1*=sum1;
        //计算平方的和
        for(int i=1;i<=N;i++){
                sum2+=i*i;
        }
        cout<<sum1-sum2;
        return 0;
}

996982937 发表于 2019-2-23 16:23:19

#include<stdio.h>
#include<math.h>
void main()
{
        long int n=100;
        long int sum=n*(n+1)/2;
        long int sum_square=sum*sum;
        long int square_sum=n*(n+1)*(2*n+1)/6;
        long int difference=sum_square-square_sum;
        printf("%d\n",difference);
}


25164150

愿你 发表于 2019-3-14 16:51:58

#include <stdio.h>
main()
{
        int i,j,sum1,sum2,cha;
        sum1=sum2=cha=0;

        for(i=1;i<=100;i++)//求平方的和
        {
                sum1=sum1+i*i;
        }
        for(i=1;i<=100;i++)//求和的平方
        {
                sum2=sum2+i;
        }
        sum2=sum2*sum2;
        cha=sum2-sum1;
        printf("前一百个数的平方和为:%d\n前一百个数和的平方为:%d\n",sum1,sum2);
        printf("他们的差为:%d",cha);
}

愿你 发表于 2019-3-14 17:06:25

#include <stdio.h>
#include<math.h>
int isprime(int x)//是素数则返回1,不是则返回0.
{
        int i;
        for(i=2;i<=sqrt(x);i++)
        {
                if(x%i==0)
                {
                        return 0;
                }
        }
        return 1;
}
main()
{
        int i,j,count;
        count=0;
        for(i=2;;i++)
        {
                if(isprime(i))
                {
                        count++;
                        if(count==10001)
                                {
                                        printf("第1001个素数为:%d",i);
                                        break;
                                }
                }
        }
}

王小召 发表于 2019-4-10 14:39:12

运行结果:25164150.0
运行时间:0.156001

import time
def get_asum(max):
    result = 0
    for i in range(1, max + 1):
      result += i**2
    return result

def get_bsum(max):
    result = max**2 * (max + 1)**2 * 0.25
    return result

def get_re(max):
    return get_bsum(max) - get_asum(max)

print(get_re(100))

永恒的蓝色梦想 发表于 2019-8-3 10:46:37

本帖最后由 永恒的蓝色梦想 于 2020-8-30 22:21 编辑

公式 :
https://s1.ax1x.com/2020/08/30/dqiMng.png
Python 3 :def function(n: int) -> int:
    return n * (n - 1) * (n + 1) * (3 * n + 2) // 12


print(function(100))
C++ :#include<iostream>
using namespace std;



constexpr unsigned long long function(unsigned long long n)noexcept {
    unsigned long long result = n - 1;
    result *= n + 1;


    if (n & 1) {
      result >>= 2;
      result *= n;
      result /= 3;
      n *= 3;
      n += 2;
    }
    else {
      n >>= 1;
      result *= n;
      result /= 3;
      n *= 3;
      ++n;
    }


    return result * n;
}



int main() {
    ios::sync_with_stdio(false);
    cout << function(100) << endl;
    return 0;
}

1666194196 发表于 2019-10-9 14:40:32

本帖最后由 永恒的蓝色梦想 于 2020-8-30 22:27 编辑

#include <stdio.h>

void main(){
        //前十个自然数的平方的和是
        //12 + 22 + … + 102 = 385
        //前十个自然数的和的平方是
        //(1 + 2 + … + 10)2 = 552 = 3025
        //因此前十个自然数的平方的和与和的平方之差是 3025 - 385 = 2640。
        //求前一百个自然数的平方的和与和的平方之差。
       
        int i,sum1=0;
        for(i=1;i<=100;i++){//前十个自然数的平方的和
                sum1+=i*i;
        }
        int j,sum=0;
        for(j=1;j<=100;j++){//前十个自然数的和的平方
                sum+=j;
        }
        int sum2,x;
        sum2 = sum*sum;
       
        x = sum2 - sum1;
        printf("x=%d",x);
}

带上面具的孩纸 发表于 2019-10-22 13:34:59

JonTargaryen 发表于 2017-3-27 11:09
这个是有公式的呀,根本不需要循环

这个算法棒

foxiangzun 发表于 2019-11-5 17:44:49

list1 =
list2 =
num1 = sum(list2)
num2 = pow(sum(list1), 2)
print(num2 - num1)

guoquanli 发表于 2019-12-31 16:25:09

本帖最后由 永恒的蓝色梦想 于 2020-8-30 22:28 编辑

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
//前一百个数求和
int AddResultPower(){
    int sum = 0;
    for(int i = 1; i<=100;i++){
      sum += i;
    }
    return sum*sum;
}
//前100个数的平方的和
int PowerResultAdd(){
    int sum = 0;
    for(int i = 1; i<=100; i++){
      sum += i*i;
    }
    return sum;
}
void main(){
    int sum_1 = AddResultPower();
    int sum_2 = PowerResultAdd();
    printf("finally result is :%d\n",sum_2 - sum_1);
    return ;

}
=========================================
finally result is :-25164150

就是要努力呀 发表于 2020-1-21 13:33:26

本帖最后由 永恒的蓝色梦想 于 2020-8-30 22:28 编辑

//公式法快速解决
//(n(1+n))/2    自然数前n项和的公式   
//(n(n+1)(2n+1))/6      自然数前n项平方和的公式
#include <stdio.h>
#include <math.h>

#define MAX 100

int main(void)
{
      long int result = 0;

      result = pow((MAX * (1 + MAX)) / 2, 2) - (MAX * (MAX + 1) * (2 * MAX + 1)) / 6;

      printf("result = %ld\n", result);

      return 0;
}

长大1/2 发表于 2020-1-26 10:02:04

本帖最后由 永恒的蓝色梦想 于 2020-8-30 22:28 编辑

#include <stdio.h>
#define NUM 100
int main(){
      long longresult1 = 0;
      long long result2 = 0;
      long long result;
      long long i;
      for (i=1;i<=NUM;i++){
                result1 = result1 + i * i;
                result2 = result2 + i;
      }
      result = result2 * result2 - result1;

      printf("%ld\n",result);

      return 0;
}

许亮123456 发表于 2020-2-6 16:09:53

有时候需要这样简单的思路去解决一些问题
页: 1 2 [3] 4
查看完整版本: 题目6:平方和与和平方的差是多少?