已知连续2008个正整数的和是一个完全平方数,则其中最大的数的最小值是? 10

lca001
2009-07-12 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2493
采纳率:0%
帮助的人:1299万
展开全部
解 设连续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。
百度网友532a875
2009-07-12 · TA获得超过214个赞
知道小有建树答主
回答量:670
采纳率:0%
帮助的人:269万
展开全部
#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

参考资料: 赵永哲《C语言程序设计》算法导论

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5bd0bbe92
2009-07-12 · TA获得超过2138个赞
知道大有可为答主
回答量:628
采纳率:0%
帮助的人:0
展开全部
设最小的那个数是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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式