鱼C论坛

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

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

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

import time

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

start = time.clock()
print('前一百个自然数的平方和与和平方之差为%d' %difference(100))
end = time.clock()
print('程序执行了%fs。' %(end - start))
执行结果:
前一百个自然数的平方和与和平方之差为25164150
程序执行了0.000161s。

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

评分

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

查看全部评分

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

int main(void)
{
    long int sum_square, square_sum = 0;
    long int result;
    int n = 100;

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

    result = sum_square - square_sum;

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

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> 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自然数的和的平方和平方之和的差
import time

start = time.time()

def sumsquare(n):
    sumsquare100 = 0
    for i in range(1,n+1):
        sumsquare100 += i**2
    return sumsquare100

def squaresum(n):
    sum100 = 0
    for i in range(1,n+1):
        sum100 += i
    return sum100**2


print(squaresum(100)-sumsquare(100))

end = time.time()

print(end-start)

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

使用道具 举报

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

int main()
{
        const int L = 100;
        int a = 0;
        int b = 0;
        for (int i = 1;i <= L;i++)
        {
                a += (i*i);
                b += i;
        }
        printf("%d\n", b*b - a);

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

使用道具 举报

发表于 2017-5-4 16:51:30 | 显示全部楼层
答案是25164150
#include<stdio.h> 
//1^2+2^2+...+n^2 = n*(n+1)*(2n+1)/6
int main(void)
{
        int n,rst;        //n表示前n个数字 
        printf("enter the num:\t");
        scanf("%d",&n);
        rst=n*n*(n+1)*(n+1)/4-n*(n+1)*(2*n+1)/6;
        printf("%d\n",rst);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

#define N 100

int main(void){
        
        int sum = 0, sum1 = 0;
        
        sum = N * (N+1) * (2*N+1) / 6;        
        sum1 = (1+N) * N / 2;
        
        sum1 *= sum1;
        
        printf("%d",sum1 - sum);
        
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2017-9-11 17:17:10 | 显示全部楼层
square,sumi = 0,0
for i in range(1,101):
    square += i*i
    sumi += i
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 | 显示全部楼层
#include<stdio.h>
#include<math.h>
int SquareSum(int x)
{
        int i,y=0;
        for(i=1;i<=x;i++)
        {
                y=y+i*i;
        }
        return y;
}
int SumSquare(int x)
{
        int i,y=0;
        for(i=1;i<=x;i++)
        {
                y=y+i;
        }
        return y*y;
}
void main()
{
        int n=100;
        printf("%d\n",abs(SquareSum(n)-SumSquare(n)));
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 05:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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