Private Sub Form_Click()
Form1.Cls
Dim a As Long, b As Long, c As Boolean
For a = 2 To 100
c = False
For b = a - 1 To 2 Step -1
If a Mod b = 0 Then
c = True
Exit For
End If
Next b
If c = False Then Print a;
Next a
End Sub
这段是从书上抄下来的 我是刚学的vb 哪个大哥 能帮我分析一下 每个步骤都是啥意思啊
尤其是 For b = a - 1 To 2 Step -1
是在看不懂
用vb 算出100以内素数的问题
答案:5 悬赏:70
解决时间 2021-03-22 10:10
- 提问者网友:相思故
- 2021-03-21 10:46
最佳答案
- 二级知识专家网友:野性且迷人
- 2021-03-21 11:15
其实就是两个循环而已
自己将逻辑弄清就很简单了
Dim a As Long, b As Long, c As Boolean
是定义数据
Form1.Cls
是清除以往输入
For a = 2 To 100
定义a是2-100之间的数
c = False
定义c的初值是false
For b = a - 1 To 2 Step -1
定义b为2到(a-1)之间的数(素数是只能被1和自身整除的数,换言之,要判断a是否为素数就要判断2到(a-1)能不能将a整除)
If a Mod b = 0 Then
c = True
Exit For
End If
如果b能够整除a(也就是a为素数了),那么就令c=true,退出for循环
If c= False Then Print a;
如果c= False(也就是a不为素数),那么就显示
全部回答
- 1楼网友:厭世為王
- 2021-03-21 16:05
long boolean 这些都是数据类型,long是长整型,表示-2147483648到2147483648的整数,boolean是逻辑型,只有true和false 两种
从2开始,先假设这个数步是素数,素数就是这个数只能被1和自身整除,这之间的数不能被它整除,For b = a - 1 To 2 Step -1 这句就是a这个数和1之间所有整数的意思,
If a Mod b = 0 Then
c = True 如果a能被这之间有一个数整除,说明是素数,就是c = True
Exit For 已经判断出来了,那这个循环就结束了
End If
- 2楼网友:哭不代表软弱
- 2021-03-21 14:43
For b = a - 1 To 2 Step -1
是遍历由a-1到2的数
step是步长,也就是后一个数和前一个数的间隔,默认是1,为-1就是倒序的
- 3楼网友:爱情是怎么炼成的
- 2021-03-21 13:09
private sub form_click()
dim i as integer, j as integer, x as integer
for i = 1 to 100
x = 0 ‘i是素数的标记
for j = 2 to i - 1 ‘如在此范围内都不能整除,i就是素数
if i mod j = 0 then x = 1 ‘如整除了,就不是素数
next j
if x = 0 then print i ’如是素数,就输出i
next i
end sub
- 4楼网友:时光不老我们不分离
- 2021-03-21 11:46
这是书本上的程序吗?简直写的一团遭.误人子弟
Private Function sus(ByVal x As Long) As Boolean
'求素数
Dim i As Long
sus = True
For i = 2 To Math.Sqr(x)
If x Mod i = 0 Then sus = False: Exit For
Next i
End Function
Private Sub Form_Click()
Dim i As Long
For i = 2 To 100
If sus(i) Then Label1.Caption = Label1.Caption & Space(5) & i
Next i
End Sub
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯