1、 素数是一个大于素数是一个大于2,且,且不能被不能被1和本身以外的和本身以外的整数整除的数。整数整除的数。判别某数判别某数m是否为素数最简单的方法是是否为素数最简单的方法是:对于对于m,从从 i=2,3,判别,判别m能能否被否被i整除,只要有一个能整除,整除,只要有一个能整除,m不是素数,不是素数,否则否则m是素数。是素数。求素数求素数m求求100以内素数以内素数在循环语句中如何表示一个数是否为素数?在循环语句中如何表示一个数是否为素数?定义一个定义一个Boolean型变量型变量Flag,Flag=true表示表示一个数为素数,一个数为素数,Flag=false表示一个数不是素数。表示一个数不
2、是素数。解题思路:解题思路:(1)如何判断一个数)如何判断一个数m是否为素数;(是否为素数;(m除以除以i=2 ).(2)使用循环语句找出)使用循环语句找出1100之间所有的素数。之间所有的素数。mPrivate Sub Command1_Click()Dim i As Integer,m As Integer,n as integer Dim flag As Boolean :n=0 For m=2 To 100 flag=True If flag=true Then print m;”;n=n+1 if n mod 10=0 then Print End if Next mEnd Sub判
3、断一数是否判断一数是否为素数,为素数,用flag来标注假定假定m为为素数素数根据根据flag来打印素数来打印素数For i=2 To Sqr(m)If(m Mod i)=0 Then flag=FalseNext i 在窗体上换行输在窗体上换行输出的方法,一行出的方法,一行固定输出固定输出10数字数字常用算法常用算法1.1.累加、连乘累加、连乘 累加是在原有和的累加是在原有和的基础上一次一次地每次基础上一次一次地每次加一个数。加一个数。Sum=Sum+i 连乘是在原有积连乘是在原有积的基础上一次一次地的基础上一次一次地每次乘一个数每次乘一个数。t=t*i 算法是对某个问题求解过程的描述算法是对
4、某个问题求解过程的描述 计算计算sum 1!2!3!10!Private Sub Form_Click()Dim sum As Long Dim i As Integer Dim t As Long sum=0:t=1 For i=1 To 10 t=t*i sum=sum+t Next i Print 1!+2!+3!+.+10!=;sumEnd Sub求自然对数求自然对数e e的近似值的近似值,要求其误差小于要求其误差小于0.000010.00001,近似公式为近似公式为:m1i0ii!11i!1 .!1.3!1!211!11ei该例题涉及两个问题:该例题涉及两个问题:(1 1)用循环结构
5、求级数和的问题。本例)用循环结构求级数和的问题。本例根据某项值根据某项值(t)(t)的精的精度度(要求计算精度为要求计算精度为0.000010.00001)来控制循环的结束与否。来控制循环的结束与否。(2 2)累加:)累加:e=e+t e=e+t 循环体外对累加和的变量清零循环体外对累加和的变量清零 e=0e=0 连乘:连乘:n=nn=n*i i 循环体外对连乘积变量置循环体外对连乘积变量置1 1 n=1n=1级数级数t连乘积连乘积n累加和累加和ePrivate Sub Form_Click()Private Sub Form_Click()Dim i%,n&,t!,e!Dim i%,n&,t
6、!,e!e=0:n=1e=0:n=1 e e存放累加和、存放累加和、n n存放阶乘存放阶乘 i=0:t=1i=0:t=1 i i计数器、计数器、t t第第i i项的值项的值 Do While t 0.00001Do While t 0.00001 e=e+t e=e+t 累加累加 i=i+1i=i+1 n=n n=n*i i 连乘连乘 t=1.0/nt=1.0/n Loop Loop Print Print 计算了计算了 ;i;i;项的和是项的和是 ;e;eEnd SubEnd Sub穷举法求水仙花数穷举法求水仙花数 水仙花数是一个三位数,它的每位数的水仙花数是一个三位数,它的每位数的立方和刚
7、好等于其本身。如立方和刚好等于其本身。如 153就是水仙就是水仙花数花数 153=13+53+33思考:找出思考:找出1000之内的所有完数。之内的所有完数。完数的界定:完数的界定:一个数恰好等于他的因子之和,这个数一个数恰好等于他的因子之和,这个数就称为完数。如数字就称为完数。如数字6,它的因子是,它的因子是1、2、3,刚好有等式:,刚好有等式:6=1+2+3 成立,所以成立,所以6就是一个完数。就是一个完数。回文数:第一位数与最后一位数相等,第二位回文数:第一位数与最后一位数相等,第二位数与倒数第二位数相等数与倒数第二位数相等第第N位数与倒数第位数与倒数第N位位数相等数相等 Private
8、 Sub Command1_Click()Dim n As Integer Dim i As Integer Dim sum As Integer For n=1 To 1000 sum=0 For i=1 To n-1 If n Mod i=0 Then sum=sum+i Next i If sum=n Then Text1.Text=Text1.Text&n&vbCrLf End If Next n End Sub完完数数 Private Sub Command1_Click()Dim num As String Dim str As String Dim i As Integer nu
9、m=Text1.Text str=For i=1 To Len(num)str=Mid(num,i,1)&str Next i If str=num Then Label2.Caption=num&是回文数是回文数 Else Label2.Caption=num&不是回文数不是回文数 End If End Sub回回文文数数 “递推法递推法”又称为又称为“迭代法迭代法”,其基本思想是把一个复杂的计算过程转化为,其基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次重复都从旧值的基础上递推出新值,并由新值代简单过程的多次重复。每次重复都从旧值的基础上递推出新值,并由新值代替旧值。替旧值。
10、实验实验D第第7题题:4.4.递推法递推法在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,若无法估计较小的值,则取第一个数为最大值的初值;然后将每一个若无法估计较小的值,则取第一个数为最大值的初值;然后将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值;依次逐数与最大值比较,若该数大于最大值,将该数替换为最大值;依次逐一比较。一比较。例例 随机产生随机产生1010个个100100200200之间的数,求最大值。之间的数,求最大值。Private Sub Command1_Click()dim max as int
11、eger,x as integer Max=100 For i=1 To 10 x=Int(Rnd*101+100)Print x&“”;If x Max Then Max=x Next i Print Print 最大值最大值=;MaxEnd Sub5.5.最小、最大值最小、最大值 随机输入随机输入10名学生成绩,将成绩显示在窗名学生成绩,将成绩显示在窗体中。并显示其中的最好及其序号。输入体中。并显示其中的最好及其序号。输入输出形式自定。输出形式自定。例如:输入例如:输入85,74,62,37,98,77,65,77,69,81显示:显示:5号成绩最好,号成绩最好,98分分Private S
12、ub Form_Click()Dim i As Integer,cj As Integer Dim max As Integer,maxn As Integer max=0:maxn=0 For i=1 To 10 cj=Val(InputBox(请输入第请输入第&i&同学的成绩同学的成绩)Print cj&;If i Mod 5=0 Then Print If cj max Then max=cj:maxn=i Next i Print Print 第第&maxn&号的得分最高,为号的得分最高,为&maxEnd Sub思考:思考:增加显示最差成绩和平均分增加显示最差成绩和平均分 4号成绩最差
13、号成绩最差,37分分 平均分为,平均分为,XX Private Sub Command1_Click()统计按钮的事件过程统计按钮的事件过程 Dim str As String:Dim zimu As Integer:Dim shuzi As Integer Dim qita As Integer:Dim i As Integer:Dim ccstr As String*1 zimu=0:shuzi=0:qita=0 str=Text1.Text For i=1 To Len(str)ccstr=Mid(str,i,1)Select Case ccstr Case A To Z,a To z
14、zimu=zimu+1 Case 0 To 9 shuzi=shuzi+1 Case Else qita=qita+1 End Select Next i Text2.Text=zimu:Text3.Text=shuzi:Text4.Text=qita End Sub输入一个字符串,统计其中每个字母(不区输入一个字符串,统计其中每个字母(不区分大小写)出现的频率。分大小写)出现的频率。Private Sub Text1_KeyPress(KeyAscii As Integer)Dim str$,i%,ccstr$Dim n(26)As Integer If KeyAscii=13 Then s
15、tr=Text1.Text For i=1 To Len(str)ccstr=UCase(Mid(str,i,1)n(Asc(ccstr)-65+1)=n(Asc(ccstr)-65+1)+1 Next i For i=1 To 26 If n(i)0 Then Picture1.Print Chr(i+65-1)&出现了出现了&n(i)&次次 End If Next i End If End SubPrivate Sub Command1_Click()Picture1.Cls Text1.Text=End Sub 清屏清屏是否已经按下回车键得判断是否已经按下回车键得判断文本框得文本框得keypress事件,事件,keyascii为其参数为其参数执行下面的程序段后,输出结果为执行下面的程序段后,输出结果为_。x=5For I=1 To 20 Step 2 x=x+I 5Next IPrint x,I(A)21 20 (B)22 20 (C)21 21 (D)22 21 以下程序段的输出结果是以下程序段的输出结果是_。num=0 Do Until num2 num=num+1 Loop Print num