对于任意正整数都可以找出至少一串连续奇数,它们的和等于该整数的立方,验证2-20是否满足。
2016-10-18 21:21
501 查看
先举一些栗子吧:
1^3=1
2^3=3+5=8
3^3=7+9+11=27
4^3=13+15+17+19=64
5^3=21+23+25+27+29=125
先由上面这些栗子可以看出一些简单的规律,
1、连续的整数找出的这些一连串的奇数也是连续的,
2、每个整数对应的奇数列的数字个数等于这个数的数值,
3、每个奇数列的首项和末项与对应的整数有对应的表达式,如21=5*5-5+1,29=5*5+5-1
4、奇数数列的中间项或中间两项平均值就是对应整数n的平方,以这个平方数向两边延伸n个奇数项,这些项的和就是n平方值乘n。
不过定理说至少有一个连续奇数列,也许有的数不止一个奇数列,但是我想不出来了,能写出一个算法来证明有一个那就可以了吧。
根据上面总结的规律写出了下面这个程序:
#include<stdio.h>
#define N 30
void prove(int n)
{
int m=n*n*n,x=n*n-n+1;
int i,s=0,a
,j,count=0;
//printf("%d %d %d\n",m,x,s);
for(i=x,j=0;s!=m;i+=2,j++)
{
//printf("%d %d %d\n",i,j,s);
if(s>m)
{
printf("This theorem is wrong.\n");
break;
}
else
{
a[j]=i;
count++;
}
s+=i;
}
printf("%d^3=\t",n);
for(i=0;i<count;i++)
{
if(i==count-1)
printf("%-5d",a[i]);
else
printf("%-5d+",a[i]);
if((i+1)%10==0&&i!=count-1)
printf("\n\t");
}
printf("\n");
}
int main()
{
int i=2;
for(i=2;i<=20;i++)
prove(i);
return 0;
}
在函数prove()里面用s=n^3作为循环结束的标志,在循环内部也设置了如果s>n^3就跳出循环并输出错误信息的语句,也就是说如果没有输出错误信息,最后记录在数组里的数都是满足要求的连续奇数列。最后输出按照满10个数字换行进行排版,勉强看得过去。
具体看图:
1^3=1
2^3=3+5=8
3^3=7+9+11=27
4^3=13+15+17+19=64
5^3=21+23+25+27+29=125
先由上面这些栗子可以看出一些简单的规律,
1、连续的整数找出的这些一连串的奇数也是连续的,
2、每个整数对应的奇数列的数字个数等于这个数的数值,
3、每个奇数列的首项和末项与对应的整数有对应的表达式,如21=5*5-5+1,29=5*5+5-1
4、奇数数列的中间项或中间两项平均值就是对应整数n的平方,以这个平方数向两边延伸n个奇数项,这些项的和就是n平方值乘n。
不过定理说至少有一个连续奇数列,也许有的数不止一个奇数列,但是我想不出来了,能写出一个算法来证明有一个那就可以了吧。
根据上面总结的规律写出了下面这个程序:
#include<stdio.h>
#define N 30
void prove(int n)
{
int m=n*n*n,x=n*n-n+1;
int i,s=0,a
,j,count=0;
//printf("%d %d %d\n",m,x,s);
for(i=x,j=0;s!=m;i+=2,j++)
{
//printf("%d %d %d\n",i,j,s);
if(s>m)
{
printf("This theorem is wrong.\n");
break;
}
else
{
a[j]=i;
count++;
}
s+=i;
}
printf("%d^3=\t",n);
for(i=0;i<count;i++)
{
if(i==count-1)
printf("%-5d",a[i]);
else
printf("%-5d+",a[i]);
if((i+1)%10==0&&i!=count-1)
printf("\n\t");
}
printf("\n");
}
int main()
{
int i=2;
for(i=2;i<=20;i++)
prove(i);
return 0;
}
在函数prove()里面用s=n^3作为循环结束的标志,在循环内部也设置了如果s>n^3就跳出循环并输出错误信息的语句,也就是说如果没有输出错误信息,最后记录在数组里的数都是满足要求的连续奇数列。最后输出按照满10个数字换行进行排版,勉强看得过去。
具体看图:
相关文章推荐
- 对于任意正整数都可以找出至少一串连续奇数,它们的和等于该整数的立方。以下程序验证[2,20]之间的数满足这一性质。
- 对于任意正整数都可以找出至少一串连续奇数,它们的和等于该整数的立方。以下程序验证[2,20]之间的数满足这一性质。
- 对于任意正整数都可以找出至少一串连续奇数,它们的和等于该整数的立方。以下程序验证[2,20]之间的数满足这一性质
- 对于任意正整数都可以找出至少一串连续奇数,它们的和等于该整数的立方。以下程序验证[2,20]之间的数满足这一性质。
- 对于任意正整数,都可以找出至少一串连续奇数,他们的和等于该整数的立方,验证【2,20】
- 对于任意正整数都可以找出至少一串连续奇数,它们的和等于该整数的立方
- 一串连续奇数,它们的和等于该整数的立方。找出[2,20]之间的数满足这一性质。
- 给定整数a1、a2、a3、...、an,判断是否可以从中选出若干个数,使得它们的和等于k(k任意给定,且满足-10^8 <= k <= 10^8)。
- 给定整数a1、a2、a3、...、an,判断是否可以从中选出若干个数,使得它们的和等于k(k任意给定,且满足-10^8 <= k <= 10^8)。
- 程序员面试题目总结--数组(五)【数组的后面m个数移动为前面m个数、列的前n项数据、判断整数x是否可以表示成n个连续正整数的和、数组中出现奇数次的元素、二维数组中的查找】
- 小易邀请你玩一个数字游戏,小易给你一系列的整数。你们俩使用这些整数玩游戏。每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字。 例如: 如果{2,1,2,7}是你有的一系列数,小易说的数字是11.你可以得到方案2+2+7 = 11.如果顽皮的小易想坑你,他说的数字是6,那么你没有办法拼凑出和为6 现在小易给你n个数,让你找出无法从n个数中选取部分求和
- 将任意一个正整数n整数的立方分解为连续n个奇数之和
- 一个整数数列,元素取值可能是1~N(N是一个较大的正整数)中的任意一个数,相同数值不会重复出现。设计一个算法,找出数列中符合条件的数对的个数,满足数对中两数的和等于N+1
- 判断一个整数x是否可以表示成n(n>=2)个连续正整数的和
- 陈利人 面试题 对于一个n位正整数a,去掉其中任意k(k<=n)个数字后,剩下的数字按原次序排列可以组成一个新的正整数。设计一个删数算法,使得剩下的数字组成的正整数最小。
- 如何判断一个整数x是否可以表示成n个连续正整数的和
- 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!
- 12、一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现。 请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。
- 一个正整数有可能可以表示为n(n>=2)个连续的正整数之和,如:15=1+2+3+4+5,15=4+5+6,15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。
- 一个正整数有可能可以被表示为 m(m>=2) 个连续正整数之和,编写一个程序,输入一个正整数,然后找出符合这种要求的所有 连续正整数序列,若不存在这种序列,则打印None。