打印

[提问] vb的两个小问题

vb的两个小问题

本人初学vb ,遇到了两个问题
第一,把输入的内容转换成ASC2码,并保存在数组中
二 产生一个指定长度的随机素数

TOP

第一个问题:   
利用asc函数
例子:
Dim MyNumber
MyNumber = Asc("A")    ' 返回 65。

第二个问题:
简单的求素数是初学者良好的学习语句练习
但是如果要指定长度.
那么无疑是给初学者带来很大的困难.
要解决三个问题:
一,指定长度
二,随机性
三,素数
然后结合这三个特性来解决你的第二个问题
我给你写了下代码:

添加一个Listbox控件,一个CommandButton控件

Private Sub Command1_Click()
Dim n#, i#, count%, slong%
slong = InputBox("请输入指定的长度", "提示", "1")
List1.Clear
If slong = 1 Then
    For n = 2 To 7
        For i = 2 To Int(Sqr(n))
            If n Mod i = 0 Then Exit For
        Next i
    If i > Int(Sqr(n)) Then
        List1.AddItem n
        count = count + 1
    End If
    Next n
    MsgBox List1.List(Rnd() * count)
Else
    For n = 10 ^ (slong - 1) + 1 To 10 ^ slong - 1
        For i = 2 To Int(Sqr(n))
            If n Mod i = 0 Then Exit For
        Next i
    If i > Int(Sqr(n)) Then
        List1.AddItem n
        count = count + 1
    End If
    Next n
    MsgBox List1.List(Rnd() * count)
End If
End Sub

首先.因为你长度的不确定.我给予了n和i变量设定为double类型.
若改为Dim n%, i%
那么你输入个9,程序就溢出了.
其次.你的程序是要求指定长度的随机素数.
那么我指定了是2位数.那么必然导致.我要得到的素数范围在11-99范围内.
所以采用了分情况来讨论.
一个情况是1-10,另一个情况是11-1.79769313486232E308/10(末尾带0的肯定不是素数)
最后解决素数问题
因为指定长度的随机性.
所以必然导致.我输入一个2,那么素数只能在11-99里面寻找.
那么就要得到11-99所有的素数.
这里我用了list控件来保存.
最后用了rnd来表现随机性.

Deroemon

哇 哇 !!好详细
要学的东西真的好多啊...

TOP

我最近再学c++,以前也是用VB得,来学习下了。

回复 3# 的帖子

这样写代码效率似乎有些低,在测试时如果输入大数字就会没有相应

TOP

问题出在你自己给的题目上面.
试想你输入个9
那么就要从100000001-999999999里面寻找素数
你自己自己写个代码就1-10000这样的循环你看看需要多久.

Processed in 0.218547 second(s), 5 queries, Gzip enabled