VB算法设计题

来源:百度知道 编辑:UC知道 时间:2024/07/04 09:30:52
题目要求:用VB设计一个程序,用来计算1+2+3+......+100亿的结果,要求最终的结果准确,且计算时间尽可能的少。

用什么方法能准确的算出这个庞大的数字呢?
结果是50000000005000000000,这谁都知道,关键是怎么用代码表示出来!
既然小学生都知道,那请你写段程序算出来!

普通的方法不奏效,计次循环后的结果超出了取值范围,结果是错误的。

将数学工式(高中的数列)写成VB 就OK了

Private Sub Form_Click()
Dim sum As Double
Dim a1 as Long '开始计算最小数
Dim an as Long '最后要加的数
sum=n*(a1+an)/2 ‘就是(100亿)*(1+100亿)/2
Print sum

End Sub

或者
Function Sn(Byval a1 as Long ,Byval an as Long)as Long
Sn=((an-a1)+1)*(a1+an)/2
End Function

等差数列求和公式 Sn=n(a1+an)/2 或Sn=[2na1+n(n-1)d]/2 注:an=a1+(n-1)d
转换过程:Sn=n(a1+an)/2=n{a1+[a1+(n-1)d]}/2=n[2a1+(n-1)d]/2=[2na1+n(n-1)d]/2
应该是对于任一N均成立吧(一定),那么Sn-S(n-1)=[n(a1+an)-(n-1)(a1+a(n-1))]/2=[a1+n*an-(n-1)*a(n-1)]/2=an
化简得(n-1)a(n-1)-(n-2)an=a1,这对于任一N均成立
当n取n-1时式子变为,(n-3)a(n-1)-(n-2)a(n-2)=a1=(n-2)an-(n-1)a(n-1)

2(n-2)a(n-1)=(n-2)*(an+a(n-2))
当n大于2时得2a(n-1)=an+a(n-2)显然证得他是等差数列
和=(首项+末项)×项数÷2
项数=(末项-首项)÷公差+1
首项=2和÷项数-末项
末项=2和÷项数-首项
末项=首项+(项数-1)×公差
性质:
若 m、n、p、q∈N
①若m+n=p+q,则am+an=ap+aq
②若m+n=2q,则am+an=2aq

<