关于编程大赛的一道题目,一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,找出这样的数并输出!
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/10 08:44:54
关于编程大赛的一道题目,一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,找出这样的数并输出!
一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:
15=1+2+3+4+5
15=4+5+6
15=7+8
请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列.
例如:输入15,则输出
15=1+2+3+4+5
15=4+5+6
15=7+8
若不符合则输出提示信息!
要求要用C语言实现,因为本人目前只能看懂C语言!
一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:
15=1+2+3+4+5
15=4+5+6
15=7+8
请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列.
例如:输入15,则输出
15=1+2+3+4+5
15=4+5+6
15=7+8
若不符合则输出提示信息!
要求要用C语言实现,因为本人目前只能看懂C语言!
这个问题看起来不是很简单,需要设计一个算法:
先讲数学:
设:
an=a+(n-1)*d (这里d=1)
a1=a
an=a+n-1
sn=(a1+an)n/2=(2a-1+n)/2
再回到这个编程上来:
我们的输入数据其实就是sn,需要找到以a开始的n个连续的递增数列使得和为sn.
这里我们可以用循环来判定,给定一个n,sn已知,就可以求出a,如果a为正整数那么就可以找到等差数列的首项,加上n给定,d=1,那么就可以写出这个和式子.
代码如下:
#include<stdio.h>
void main()
{
\x09int input,i,n,flag;
\x09float a;//等差数列的首项不一定为整数
\x09flag=0;
\x09printf("输入判断的整数:\n");
\x09scanf("%d",&input);
\x09for(n=2;n<=input;n++)
\x09{
\x09\x09a=(2*input+n-n*n)/(2.0*n);//求的首项
\x09\x09if(int(a)==a&&a>0)//如果为整整数,则满足要求
\x09\x09{
\x09\x09\x09
\x09\x09\x09printf("%d=%d",input,int(a));//输出的序列为整数,a实质是整数,那么强制转化类型不影响结果
\x09\x09\x09for(i=1;i<=n-1;i++)
\x09\x09\x09\x09printf("+%d",int(a+i));//等差数列的其他项也为整数,a+i实质是整数,装换类型
\x09\x09\x09printf("\n");
\x09\x09\x09\x09flag++;//flag记录满足要求的数列数
\x09\x09}
\x09\x09
\x09}
\x09if(flag==0) //flag初始为0,通过上面的循环,如果有满足的在则不为0,为0则说明不能写成等差数列
\x09\x09printf("%d不能被表示成n连续正整数之和\n",input);
}
先讲数学:
设:
an=a+(n-1)*d (这里d=1)
a1=a
an=a+n-1
sn=(a1+an)n/2=(2a-1+n)/2
再回到这个编程上来:
我们的输入数据其实就是sn,需要找到以a开始的n个连续的递增数列使得和为sn.
这里我们可以用循环来判定,给定一个n,sn已知,就可以求出a,如果a为正整数那么就可以找到等差数列的首项,加上n给定,d=1,那么就可以写出这个和式子.
代码如下:
#include<stdio.h>
void main()
{
\x09int input,i,n,flag;
\x09float a;//等差数列的首项不一定为整数
\x09flag=0;
\x09printf("输入判断的整数:\n");
\x09scanf("%d",&input);
\x09for(n=2;n<=input;n++)
\x09{
\x09\x09a=(2*input+n-n*n)/(2.0*n);//求的首项
\x09\x09if(int(a)==a&&a>0)//如果为整整数,则满足要求
\x09\x09{
\x09\x09\x09
\x09\x09\x09printf("%d=%d",input,int(a));//输出的序列为整数,a实质是整数,那么强制转化类型不影响结果
\x09\x09\x09for(i=1;i<=n-1;i++)
\x09\x09\x09\x09printf("+%d",int(a+i));//等差数列的其他项也为整数,a+i实质是整数,装换类型
\x09\x09\x09printf("\n");
\x09\x09\x09\x09flag++;//flag记录满足要求的数列数
\x09\x09}
\x09\x09
\x09}
\x09if(flag==0) //flag初始为0,通过上面的循环,如果有满足的在则不为0,为0则说明不能写成等差数列
\x09\x09printf("%d不能被表示成n连续正整数之和\n",input);
}
关于编程大赛的一道题目,一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,找出这样的数并输出!
编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列.
从键盘输入一个正整数n,计算该数的个位数字之和并输出.
从键盘输入一个正整数n,计算该数的各位数字之和并输出.例如,输入5246,则计算5+2+4+6=17并输出.
输入一个正整数,输出该数的阶乘.求整数n的阶乘公式为:=1*2*…*n.(n!表示n的阶乘)
输入一个正整数n(1<n≤10),再输入n个正整数,找出其中的素数,并将它们从大到小排序后输出
用Java编程 :输入一个正整数n,输出n!的值.其中n!=1*2*3*…*n.
若对于任意n个连续正整数中,总存在一个数的数字之和是8的倍数.试确定n的最小值并说明理由
已知5个连续正整数的中间一个数为n,请你写出其余4个数.
从键盘输入一个正整数n,计算该数的个位数字之和并输出.例如,输入数是5246,则计算5+2+4+6=17并输出.
Description 输入正整数n,试编程输出n以内能被5和7整除的数.(不包括n)
关于VB的题 输入一个正整数N,计算出N!并输出.