作业帮 > 数学 > 作业

求教!输出和为100的连续数的算法

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/18 06:36:24
求教!输出和为100的连续数的算法
是正整数!比如求和为1000的连续正整数,有个组合为:198、199、 200、201 、202
如果用程序:(delphi语言)算法应该是看得懂的.
var
i,j,k integer;
a:string;
begin
for i := 1 to 50 do begin
a:=inttostr(i);
for j:=i+1 to 50 do begin
k:=i+j;
a:=a+','+inttostr(j);
if k=100 then begin
showmessage(a);//可以定义一个字符串数组,每次赋这个字符串给数组.
break;//跳出内循环
end;
if k>100 then begin
break;//跳出内循环
end;
end;
end;
end;
根据位数来算
1+2 = 3 + 2*n =100 n整数,不成立
1+2+3 =6 +3*n =100 n整数,不成立
1+2+3+4 =10 +4*n =100 n整数,不成立
1+2+3+4+5 =15 +5*n =100 n=17 成立 这组整数为18,19,20,21,22
1+2+3+4+5+6=21 +6n =100 n整数,不成立
1+2+3+4+5+6+7 =28 +7n =100 n整数,不成立
1+2+3+4+5+6+7 +8 = 36+8n =100 n =8 成立 这组数为9-16的连续整数
1+2+3+4+5+6+7 +8+9=45+9n =100 n整数,不成立
1+2+3+4+5+6+7 +8+9+10 =55 +10n =100 n整数,不成立
1+2+3+4+5+6+7 +8+9+10 +11 = 66+11n =100 n整数,不成立
1+2+3+4+5+6+7 +8+9+10 +11 +12=78+12n =100 n整数,不成立
1+2+3+4+5+6+7 +8+9+10 +11 +12+13=91+13n =100 n整数,不成立
后面就没有可能了 .根据这个算法也可以写出一个循环代码,比上面的更简单.
k:=0;
m:=0;
for i:= 2 to 13 do begin
for j:=1 to i do begin
k:=k+j;
end;
k:=100-k;
m:=k mod i;
if m= 0 then
showmessage(inttostr(round(k/i)+1)+'--'+inttostr(round(k/i)+i));
end;
再问: 能不能写通用的算法啊???? C 语言不会写不?java也行,,你这个看不懂
再答: C 不太会用,看下面的能不能看懂。 for(i=2;i