已知连续2008个正整数的和是一个完全平方数,则其中最大的数的最小值是?
来源:百度知道 编辑:UC知道 时间:2024/06/20 08:53:39
解 设连续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。
#include<string.h>
#include<stdio.h>
#define N 5000000
bool square[N]; //标记哪个数是完全平方数
int main()
{
int sum;
memset(square,0,sizeof(square)); //默认不是平方数
for(int i=0;i*i<N;i++)
square[i*i]=1;
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
设最小的那个数是m: