鱼C论坛

 找回密码
 立即注册
楼主: 欧拉计划

题目6:平方和与和平方的差是多少?

[复制链接]
发表于 2016-11-21 13:02:19 | 显示全部楼层
25164150
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-9 09:54:28 | 显示全部楼层
  1. from time import time
  2. def calc(number=10):
  3.     return sum(range(1, 101)) ** 2 - sum([i ** 2 for i in range(1, 101)])
  4. start = time()
  5. print(calc(100))
  6. print('cost %.3f sec' % (time() - start))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-12 22:22:56 | 显示全部楼层
此代码使用matlab编程
Problem6所用时间为0.0012004秒
Problem6的答案为25164150
  1. %题目6:平方和与和平方的差是多少?
  2. function Output=Problem6(Input)
  3. tic
  4. if nargin==0
  5.     Input=100;
  6. end
  7. Rank=1:Input;
  8. Num1=sum(Rank)^2;
  9. Num2=sum(Rank.*Rank);
  10. Output=Num1-Num2;
  11. toc
  12. disp('此代码使用matlab编程')
  13. disp(['Problem6所用时间为',num2str(toc),'秒'])
  14. disp(['Problem6的答案为',num2str(Output)])
  15. end
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-2 14:25:42 | 显示全部楼层
  1. '''
  2. 思路:
  3. 自然数的平方和公式为:n(n+1)(2n+1)/6
  4. 自然数和的平方公式为:(n(n+1)/2)^2
  5. '''

  6. import time

  7. def difference(number):
  8.     '计算你个自然数的平方和与和平方的差'
  9.     dif = 0
  10.     sum_of_squares = number * (number + 1) * (2 * number + 1) / 6
  11.     square_of_sum = (number * (number + 1) / 2) ** 2
  12.     dif = square_of_sum - sum_of_squares
  13.     return dif

  14. start = time.clock()
  15. print('前一百个自然数的平方和与和平方之差为%d' %difference(100))
  16. end = time.clock()
  17. print('程序执行了%fs。' %(end - start))
复制代码

执行结果:
前一百个自然数的平方和与和平方之差为25164150
程序执行了0.000161s。

看了看前面的答案,竟然只有一个java的是使用了数列,其他都是循环,循环的效率明显低下

评分

参与人数 1荣誉 +2 鱼币 +1 贡献 +1 收起 理由
运维小书童 + 2 + 1 + 1 有公式在数值大的情况下运行依然高效。用循.

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-6 14:34:26 | 显示全部楼层
  1. a=sum([x**2 for i in range(1,101) ])-sum(list(range(1,101)))**2
  2. print(a)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-14 15:45:11 | 显示全部楼层
  1. sumsq=sum1=0
  2. for i in range(1,101):
  3.     sumsq+=i**2
  4.     sum1+=i
  5. sqsum=sum1**2
  6. print(sqsum-sumsq)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-14 15:45:45 | 显示全部楼层
  1. sumsq=sum1=0
  2. for i in range(1,101):
  3.     sumsq+=i**2
  4.     sum1+=i
  5. sqsum=sum1**2
  6. print(sqsum-sumsq)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-27 11:09:49 | 显示全部楼层
这个是有公式的呀,根本不需要循环

  1. #include <stdio.h>
  2. #include <math.h>

  3. int main(void)
  4. {
  5.     long int sum_square, square_sum = 0;
  6.     long int result;
  7.     int n = 100;

  8.     sum_square = pow(n * (n + 1) / 2, 2);
  9.     square_sum = n * (n + 1) * (2 * n + 1) / 6;

  10.     result = sum_square - square_sum;

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

  12.     return 0;
  13. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-3-27 11:11:04 | 显示全部楼层
JonTargaryen 发表于 2017-3-27 11:09
这个是有公式的呀,根本不需要循环

n = 100

sum_square = n * (n + 1) * (2 * n + 1) / 6
square_sum = n * (n - 1) / 2 * n * (n - 1) / 2

print(square_sum - sum_square)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-5 21:54:04 | 显示全部楼层
结果:24174150
代码:
sum(x for x in range(1,100))**2 - sum(x**2 for x in range(1,100))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-16 21:45:11 | 显示全部楼层
#求前100自然数的和的平方和平方之和的差

  1. import time

  2. start = time.time()

  3. def sumsquare(n):
  4.     sumsquare100 = 0
  5.     for i in range(1,n+1):
  6.         sumsquare100 += i**2
  7.     return sumsquare100

  8. def squaresum(n):
  9.     sum100 = 0
  10.     for i in range(1,n+1):
  11.         sum100 += i
  12.     return sum100**2


  13. print(squaresum(100)-sumsquare(100))

  14. end = time.time()

  15. print(end-start)
复制代码


结果:25164150
时间:0.005005598068237305
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-30 21:43:38 | 显示全部楼层
  1. #include<stdio.h>

  2. int main()
  3. {
  4.         const int L = 100;
  5.         int a = 0;
  6.         int b = 0;
  7.         for (int i = 1;i <= L;i++)
  8.         {
  9.                 a += (i*i);
  10.                 b += i;
  11.         }
  12.         printf("%d\n", b*b - a);

  13.         return 0;
  14. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-4 16:51:30 | 显示全部楼层
答案是25164150

  1. #include<stdio.h>
  2. //1^2+2^2+...+n^2 = n*(n+1)*(2n+1)/6
  3. int main(void)
  4. {
  5.         int n,rst;        //n表示前n个数字
  6.         printf("enter the num:\t");
  7.         scanf("%d",&n);
  8.         rst=n*n*(n+1)*(n+1)/4-n*(n+1)*(2*n+1)/6;
  9.         printf("%d\n",rst);
  10.         return 0;
  11. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-7 15:54:05 | 显示全部楼层
  1.         public static void main(String[] args) {
  2.                 // 6、前是个自然数的平方和是:12+22+32+42+52……102=385;
  3.                 // 前十个自然数的和的平方是:(1+2+3+4+5…10) 2=552=3025;
  4.                 // 所以平方和与和的平方差是3025-385=2640.
  5.                 // 找出前100个自然数的平方和与和平方的差
  6.                 int sum = 0, sum1 = 0, sub = 0;
  7.                 for (int i = 1; i < 101; i++) {
  8.                         sum = sum + i * i;
  9.                         sum1 = sum1 + i;
  10.                 }
  11.                 sum1 = sum1 * sum1;
  12.                 sub = sum1 - sum;
  13.                 System.out.println(sub);

  14.         }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-22 21:08:05 | 显示全部楼层
  1. #include <stdio.h>

  2. #define N 100

  3. int main(void){
  4.        
  5.         int sum = 0, sum1 = 0;
  6.        
  7.         sum = N * (N+1) * (2*N+1) / 6;       
  8.         sum1 = (1+N) * N / 2;
  9.        
  10.         sum1 *= sum1;
  11.        
  12.         printf("%d",sum1 - sum);
  13.        
  14.         return 0;
  15. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-22 21:08:37 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-2 09:27:25 | 显示全部楼层
  1. #前一百个自然数和的平方减去平方的和
  2. method1 = 0
  3. method2 = 0
  4. for i in range(1,101):
  5.     method1=method1+i**2
  6.     method2=method2+i
  7. method2=method2**2
  8. print("method2-method1=%d-%d=%d"%(method2,method1,method2-method1))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-11 17:17:10 | 显示全部楼层
  1. square,sumi = 0,0
  2. for i in range(1,101):
  3.     square += i*i
  4.     sumi += i
  5. print(sumi*sumi - square)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-4 15:48:35 | 显示全部楼层
#include <stdio.h>
#define N 100

long sum(int n)
{
        if (n%2)
        {
                return n/2*n+n;
        }
        else
        {
                return (n+1)*n/2;
        }
}

int main(void)
{
        long long suma=0;
        long long sumb;
       
        for( int i=1; i<=100; i++)
        {
                suma=suma+i*i;
        }
       
        sumb=sum(N)*sum(N);
       
        printf("%lld",sumb-suma);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-5 16:14:25 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<math.h>
  3. int SquareSum(int x)
  4. {
  5.         int i,y=0;
  6.         for(i=1;i<=x;i++)
  7.         {
  8.                 y=y+i*i;
  9.         }
  10.         return y;
  11. }
  12. int SumSquare(int x)
  13. {
  14.         int i,y=0;
  15.         for(i=1;i<=x;i++)
  16.         {
  17.                 y=y+i;
  18.         }
  19.         return y*y;
  20. }
  21. void main()
  22. {
  23.         int n=100;
  24.         printf("%d\n",abs(SquareSum(n)-SumSquare(n)));
  25. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 08:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表