类与对象-连续自然数和
描述 Description
对一个给定的自然数M,求出所有的连续的自然数段(连续个数大于1),这些连续的自然数段中的全部数之和为M。
例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解。
要求:(1)要求用类的方法解题
定义一个类Number,类里面有三个私有的数据成员begin和end和sum
(2)要求在类中设计一个构造函数,此构造函数接受一个整数作为参数,此整数即为在主程序中接收的自然数M,这个M用来初始化sum
(3)要求在程序中设计一个成员函数solve(),此函数利用sum来求自然数begin和end,并且在函数中直接显示begin和end的值
样例输入
10000
样例输出
18 142
297 328
388 412
1998 2002
求怎样用类解题~
[解决办法]
假设输入一个数10.
外层循环从1开始,到5.
begin=1,然后sum累加,end 从begin(1)开始。
sum=sum+end;(1=0+1) 1<10 end++ -->2
sum=sum+end;(3=1+2) 3<10 end++ -->3
sum=sum+end;(6=3+3) 6<10 end++ -->4
sum=sum+end;(10=6+4) 10=10 里层循环结束。
判断sum=M,输出 begin=1,end-1=4.
外层循环再从 begin=2,sum=0开始累加,
sum=sum+end;(2=0+2) 2<10 end++ -->3
sum=sum+end;(5=2+3) 5<10 end++ -->4
sum=sum+end;(9=5+4) 9<10 end++ -->5
sum=sum+end;(14=9+5) 14》10 里层循环结束。
不匹配,里层循环结束,(没有输出)。
外层循环从begin=3,sum=0 再累加,判断
。。。。。。。
基本过程就是这样。
感觉应该有更精准的办法,我这个数据大时,效率不高。