首页 > 其他 > 详细

[C/E] 等差数列求和

时间:2014-08-10 15:23:10      阅读:322      评论:0      收藏:0      [点我收藏+]

题目:要求给定一个整数 N,求从 0 到 N 之间所有整数相加之和。

 

解1:使用 for 循环依次递加。

#include <stdio.h>

int main(void){
    int x;
    printf("Input an integer:\n");
    scanf("%d", &x);
    printf("sum=%d\n", sum(x));
    return 0;
};

int sum(int x){
    int i, result=0;
    for(i=0; i<=x; i++){
        result+=i;
    }
    return result;
};

 

解2:题目所求实际上为一个首项为 0,末项为 N,公差为 1 的等差数列,根据等差求和公式:S[n] = N * (N + 1) / 2 或者 S[n] = (a[1] + a[n]) * n / 2。

#include <stdio.h>

int main(void){
    int x;
    printf("Input an integer:\n");
    scanf("%d", &x);
    printf("sum=%d\n", sum(x));
    return 0;
};

int sum(int x){
    return (x + 1)*x/2;
};

 

输入与输入:

$ ./a.out 
Input an integer:
100
sum=5050

 

等差数列公式

 

an = a1 + (n - 1)d

Sn = na1 + n(n-1)d/2

 

n 表示数列长度。

a1 表示首项。

d 表示公差。

Sn 表示求 n 项之和。

[C/E] 等差数列求和,布布扣,bubuko.com

[C/E] 等差数列求和

原文:http://www.cnblogs.com/ifantastic/p/3902759.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!