编写程序验证:任何一个自然数n立方都等于n个连续奇数之和。要求对每个输入的自然数计算并输出相应连续奇数

如题所述

'解题思路:
'题目要求,求证一个数的立方为若干继续奇数之和,
'我们知道乘方是由乘法发展而来的,而乘法是由多个相同的数相加而来的。这样,
'我们可以把n的立方变为n个数相加 , 即
'n的立方 = n的平方 + n的平方 + n的平方 + ……
'一共有n项的多项式,相当于一个差值为0的等差的数列,
'而只要把这个具有n项的数列变成相邻差值为2的奇数就可以实现题目所要求的。
'现在关键是求出n项中的第一项的值就可以了,其余项则是在第一项的基础上差值为2的等差数列。
'若是升序序列的话,第一项是最小的数,它的值为n的平方减去n加上1,
'这时就可写出语句代码了:
'当然这段代码只能运行n值30以内的数值,在这里仅仅是提供一点解题的思路
Sub jisu()
Dim n As Integer
n = InputBox("请输入一个大于等于2的整数")
If n < 2 Then Exit Sub
Dim nArr() As Integer '定义数组变量用来存放连续的各个奇数
ReDim nArr(1 To n) '重置数组变量的上下界
Dim nn As Long
nn = n * n - n - 1
Dim i As Integer
Dim s As String
For i = 1 To n
nArr(i) = nn + 2 * i '为数组变量赋值
s = s & nArr(i) & ","
Next
s = Left(s, Len(s) - 1)
MsgBox n & "的立方" & n * n * n & "等于连续奇数" & s & "之和"
'这样提示框的显示方式只能显示n值在30以内的数值,太大了报错
End Sub
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-04
不懂

...要求对每个输入的自然数计算并输出相应连续奇数
'题目要求,求证一个数的立方为若干继续奇数之和,'我们知道乘方是由乘法发展而来的,而乘法是由多个相同的数相加而来的。这样,'我们可以把n的立方变为n个数相加 , 即 'n的立方 = n的平方 + n的平方 + n的平方 + ……'一共有n项的多项式,相当于一个差值为0的等差的数列,'而只要把这个...

...一个自然数n的立方都等于n个连续奇数之和.要求输出相应的连续奇数...
if(n*n*n==sum){ printf("%d^3=",n);f=sum\/n;if(f%2==1){ l=f-(n-1)\/2*2;r=f+(n-1)\/2*2;while(l<=r){ printf("%d+",l);l=l+2;} printf("\\b \\n");} else { l=(f-1)-(n-2)\/2*2;r=(f+1)+(n-2)\/2*2;while(l<=r){ printf("%d+",l);l...

c++,验证任何一个自然数n的立方都可以写成n个连续奇数之和,求修改
应该是对于一些列的奇数 做从该奇数开始 共计n个奇数的累加 直到和为立方值为止 这个是思路 接下来是我写的程序,中间对累加做了优化 采用等差数列求和公式 减少循环开销 供参考 include <iostream>using namespace std;int main(){int n;int i;int n3, sum;cin >> n;if(n > 1290 || n <...

用C语言证明任何一个自然数的立方等于 N 个连续奇数之和
printf("\\n");break;} }

任何一个自然数的立方都等于一串连续奇数之和
可推出输入自然数n则:n^3=[n(n-1)+1]+………+ 后面为n个数。编程如下:include<stdio.h> int main(){ int n,m,i;printf("please input n:")scanf("%d",&n);m=n*(n-1)+1;printf("%d^3 = ",n);for(i=1;i<=n;i++){ printf("%d+",m);m=m+2;} printf("\\...

...一自然数n,然后输出它的立方等于n个连续奇数之和,测试时出了问题,不...
可能是数据溢出,因为整型变量在内存中只有两个字节,所以范围在—32768---+32768这是有符号数的,若无符号:0--65535;32的立方刚好等于32768而33的立方就超过此范围了,如果想扩大范围的话,可以用长整型的,但范围也大不了哪去,毕竟你用的是立方数。

c语言编程验证:任何一个自然数m的立方均可以写成m个连续的奇数之和...
int n, i, k, flag = 1, s = 0;do { scanf("%d", &n);for (k = 1; flag == 1; k = k + 2)for (i = 0, s=0; i < n; i++, k = k + 2){ s = k + s;if (n * n * n == s){ flag = 0;for (i = 0; i < n; i++, k = k - 2)printf(...

编程实现:输入一自然数n,求组成n3的n个连续奇数。
\/\/算法:m^3 = (m*(m-1)+(i*2+1)) + (m*(m-1)+(i*2+1)) + …… i从0开始,直到m-1 printf("m^3=%d,组成该数据的奇数分别为:", m*m*m);for(int i=0;i<m;i++){ printf("%d ",m*(m-1)+(i*2+1));} return 0;楼上的也是正确,我的可能会简单一点 ...

c语言编程:输入一个自然数n,求组成n^3的n个连续奇数
1,if(i==n) break;你这一句是不是有点多余?为什么不放在:for(i=1;i<=n;i++)?2,a=n*n-(n-1)+j*2;你的外部循环,也就是i几乎没有用,仅仅是用来增加循环次数而已,所以最小值都是7 = 3*3-2+0

任一自然数的立方和都可以写成一串连续的奇数之和
如果n是奇数 那么n的平方也是基数 n的立方就等于以n的平方为中间的一个奇数,其他数分别是n的平方加2,4……或减2,4……。一共有n项相加 比如5的立方=125 中间数为5的平方25,一共有5个奇数相加 所以125=21+23+25+27+29 如果是偶数,情况和这差不多 比如4的立方为64 中间数为16,因为...

相似回答