| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2929 人关注过本帖
标题:C语言等差数列 初值为4,输出和为100 的所有等差数列
只看楼主 加入收藏
zzgtjt
Rank: 1
来 自:内蒙
等 级:新手上路
帖 子:8
专家分:2
注 册:2011-8-18
收藏
得分:2 
顶顶顶 学习了

The Best
2011-08-25 16:07
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:2 
Sn = a1*n+n*(n-1)*d/2;
==>(n^2-n)*d+8n-200=0;
只要循环项数n,判断d是否有整数解就行了。(n不能为0或1)

LW:公差为0的等差数列也需要考虑。

倚天照海花无数,流水高山心自知。
2011-08-25 16:24
luyi_footman
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:32
专家分:100
注 册:2011-7-14
收藏
得分:2 
还有一个数列:25个4的数列应该也是满足题意的,程序如下:
程序代码:
#include<stdio.h>

int main()
{
    int an;
    int n;
    int s = 100;
    int a1 = 4;
    int d;
    int i;
    for(an = 96;an >= 4;an --)
    {
        if((2 * s) % (a1 + an) == 0)
        {
            n = (2 * s) / (a1 + an);
            if((an - a1) % (n - 1) != 0 && (an - a1) != 0) continue;            
            d = (an - a1) / (n - 1);
            for(i = 0;i < n;i ++) printf("%d ",a1 + i * d);
            printf("\n");
        }
    }
    return 0;
}

天道酬勤!
2011-08-25 17:04
Heart→M鹏
Rank: 2
等 级:论坛游民
帖 子:80
专家分:94
注 册:2011-5-13
收藏
得分:2 
回复 10楼 TonyDeng
程序代码:
# include <stdio.h>

int main()
{
    int sum, num, i;
    int sum1, num1;
   
    for (i=0; i<=96; i++)
    {
        int c;
        c = i;
        sum = 0;
        num = 4;
        while (sum < 100)
        {
            sum += num;
            num += c;
        //    printf("%d ", sum);
        //    printf("%d ", num);
        }
    //    printf("%d ", sum);
    //    printf("\n");
        if (sum >  100)
            continue;
        else if (sum <= 100)
        {
            sum1 = 0;
            num1 = 4;
            printf("100 = ");
            while (sum1 < 100)
            {
                if (num1 < 100)
                    printf("%d + ", num1);
                sum1 += num1;
                num1 += c;
                //printf("%d ", num1);

            }
            printf("\n");
        }
    }
    return 0;
}
/*
    vc中的结果:
100 = 4+ 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 +
100 = 4+ 12 + 20 + 28 + 36 +
100 = 4+ 18 + 32 + 46 +
100 = 4+ 96
Press any key to continue
*/
大神:六楼那个有点小问题,我只是小小修改了一下但是后面老是多个+,你可以帮忙看看吗?
2011-08-25 17:15
Heart→M鹏
Rank: 2
等 级:论坛游民
帖 子:80
专家分:94
注 册:2011-5-13
收藏
得分:0 
好不容易看懂六楼写的了……差距啊
2011-08-25 17:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 14楼 Heart→M鹏
最后多出来的+号,是输出时没有检测是否该结束了,加一个判断即可,先判断是否准备退出循环,如果是,则不再输出+,否则输出。

授人以渔,不授人以鱼。
2011-08-25 17:22
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
回复 16楼 TonyDeng
先输出4,后面的数全部前加+输出。

倚天照海花无数,流水高山心自知。
2011-08-26 09:46
快速回复:C语言等差数列 初值为4,输出和为100 的所有等差数列
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012248 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved