已知连续2008个正整数的和是一个完全平方数,则其中最大的数的最小值是?
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/22 21:46:42
已知连续2008个正整数的和是一个完全平方数,则其中最大的数的最小值是?
已知连续2008个正整数的和是一个完全平方数,则其中最大的数的最小值是?
已知连续2008个正整数的和是一个完全平方数,则其中最大的数的最小值是?
解 设连续2008个正整数中最小的数是m,则
m+(m+1)+...+(m+2007)=(2m+2007)*2008/2=2008m+2007*1004
如果这2008个正整数的和是一个完全平方数,则存在正整数n有
2008m+2007*1004=n^2
由于上式左边能被1004整除,故n^2也必能被1004整除,1004=2*2*251,故n也必能被251*2=502整除,设n=502k,k为正整数,代入2008m+2007*1004=n^2得
2m+2007=251*k^2,
故2m+2007能被素数251整除,即2m-1能被251整除,取最小的m,使2m-1能被251整除,取2m-1=251,m=126,代入2m+2007=251*k^2,解得k=3,n=1506,此时连续2008个正整数为
126,127,128,…,2133
满足条件的2008个正整数中最大的数的最小值是2133.
设最小的那个数是m:
m+(m+1)+...+(m+2007)
=(2m+2007)*2008/2
=2008m+2007*1004=n^2
把式子变形:
2008m+2008^2-1004*(2008*2-2007)
=n^2
也就是(n-2008)(n+2008)=1004(2m-2009)
分析:
n-2008,n+20...
全部展开
设最小的那个数是m:
m+(m+1)+...+(m+2007)
=(2m+2007)*2008/2
=2008m+2007*1004=n^2
把式子变形:
2008m+2008^2-1004*(2008*2-2007)
=n^2
也就是(n-2008)(n+2008)=1004(2m-2009)
分析:
n-2008,n+2008同奇偶,1004偶数,2m-2009奇数
所以n-2008肯定是1004的约数,否则n-2008偶数,n+2008奇数与同奇偶矛盾
1004=2*2*251
1004约数1,2,4,251,502
枚举(负因子也要列出来):
n-2008=1,2m-2009=(n+2008)/1004,无解
n-2008=2,2m-2009=(n+2008)/502,无解
n-2008=4,2m-2009=(n+2008)/251,无解
n-2008=251,2m-2009=(n+2008)/4,无解
n-2008=502,2m-2009=(n+2008)/2,解得n=2510,m=2134
n-2008=-1,2m-2009=(n+2008)/-1004,无解
n-2008=-2,2m-2009=(n+2008)/-502,无解
n-2008=-4,2m-2009=(n+2008)/-251,无解
n-2008=-251,2m-2009=(n+2008)/-4,无解
n-2008=-502,2m-2009=(n+2008)/-2,解得n=1506,m=126
所以满足条件的数列有两个:
126,127...2133,和=1506^2
以及
2134,2135...4141,和=2510^2
最大数的最小值=2133
收起
#include
#include
#define N 5000000
bool square[N]; //标记哪个数是完全平方数
int main()
{
int sum;
memset(square,0,sizeof(square)); //默认不是平方数
for(int i=0;...
全部展开
#include
#include
#define N 5000000
bool square[N]; //标记哪个数是完全平方数
int main()
{
int sum;
memset(square,0,sizeof(square)); //默认不是平方数
for(int i=0;i*i
int a1;
for(a1=1;;a1++)
{
sum=2008*a1+(2008)*(2007)/2; //S=na1+n(n-1)/2
if(square[sum])break; //和是平方数时跳出
}
printf("The answer is %d\n",a1+2007);
return 0;
}
//最后这个程序输出结果是 2133
收起