验证尼科彻斯定理

验证尼科彻斯定理,即:任何一个整数的立方都可以写成一串连续奇数的和.

*问题分析与算法设计
本题是一个定理,我们先来证明它是成立的。
对于任一正整数a,不论a是奇数还是偶数,整数(a×a-a+1)必然为奇数。
构造一个等差数列,数列的首项为(a×a-a+1),等差数列的差值为2(奇数数列),则前a项的和为:
a×((a×a-a+1))+2×a(a-1)/2
=a×a×a-a×a+a+a×a-a
=a×a×a
定理成立。证毕。
通过定理的证明过程可知L所要求的奇数数列的首项为(a×a-a+1),长度为a。编程的算法不需要特殊设计,可按照定理的证明过直接进行验证。

*程序说明与注释
#include<stdio.h>
int main()
{
int a,b,c,d;
printf("Please enter a number:");
scanf("%d",&a); /*输入整数*/
b=a*a*a; /*求整数的三次方*/
printf("%d*%d*%d=%d=",a,a,a,b);
for(d=0,c=0;c<a;c++) /*输出数列,首项为a*a-a+1,等差值为2*/
{
d+=a*a-a+1+c*2; /*求数列的前a项的和*/
printf(c?"+%d":"%d",a*a-a+1+c*2);
}
if(d==b)printf(" Y "); /*若条件满足则输出“Y”*/
else printf(" N "); /*否则输出“N”*/
}

*运行结果
1) Please enter a number:13
13*13*13=2197=157+159+161+163+165+167+169+171+173+175+177+179+181 Y
2) Please enter a number:14
14*14*14=2744=183+185+187+189+191+193+195+197+199+201+203+205+207+209 Y

*思考题
本题的求解方法是先证明,在证明的过程中找到编程的算法,然后实现编程。实际上我们也可以不进行证明,直接使用编程中常用的试探方法来找出该数列,验证该定理。请读者自行设计算法。当然这样得到的数列可能与用定理方法得到的数列不一样。


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值