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
有时候需要这样简单的思路去解决一些问题