<
您还没有登录┊登录注册 当前在线:645
源码程序系统工具编程开发图形图像网络软件应用软件多媒体类娱乐休闲驱动程序各类教程各类论文文章阅读
ASPPHPJSPASP.NETVBVF百度搜索星星练题网络文摘股市消息技能习题详细分类
当前位置:首页 \ 源码程序 \ vb代码 \ vb代码
站内搜索


判断素数(质数)的VB源码

文件大小:15 K
运行平台:Windows9X/ME/NT/2000/XP
级别评定:
添加时间:2007-7-8 8:37:44
最后更新:2007-7-8 8:37:44
相关链接:无
所需金额:0 元
添加者:管理员

Download.1

/ ::软件简介:: / ::相关软件:: / ::软件点评:: /::上一个::/ ::下一个:: /
管理首页
【CBM666 的素数 [质数]】  
 '补充素数之个数 

最近不下10来个帖都在问 素数, 特此 置顶 数天  

'大于1,并且除1和它本身外没有其他因数的自然数叫素数(或质数)  
'自然数中,2是最小的素数,除2以外,所有的偶数都不是素数.  
'如它的各位数字任意调换后仍为素数,则称为绝对素数  
'只要使用2到该数的平方根之间的所有数去除这个数,就可以判断其是否素数  

'2,100 是2---100之间,100--500 改为 Call chkss(100, 500) 即可  
'点击窗体得到结果  

Dim i%, j%, tcount%, tsum&, jj!, ss As Boolean 
Private Sub Form_Load() 
    Me.AutoRedraw = True 
End Sub 

Private Sub Form_Click() 
    tsum = 0: tcount = 0 
    Call chkss(2, 100) 
End Sub 

Sub chkss(stnum%, endnum%) 
    For i = stnum To endnum 
       jj = Int(Sqr(i)) 
       ss = False 
       For j = 2 To jj 
          If i Mod j = 0 Then ss = True: Exit For 
       Next j 
       If ss = False And i > 1 Then Print i: tsum = tsum + i: tcount = tcount + 1 
    Next i 
    MsgBox "素数的个数:" & Str(tcount) & Chr(10) & "总和:" & CStr(tsum) 
End Sub  
 
 贴子相关图片: 
 
 作者: cbm666   2007-7-3 16:32   回复此发言    
 
--------------------------------------------------------------------------------
 
2 回复:【CBM666 的素数 [质数]】  
 太麻烦了,这是我写的计算,两个数之间素数的个数:  

Private Sub Form_Load()  
Dim a%, b%, c%, i%, s%  
l1: a = Val(InputBox("请输入起始数字"))  
b = Val(InputBox("请输入末数字"))  
If b < a Or b = 0 Then MsgBox "输入有误,错误为:起始数<末数字": GoTo l1  
If a = 1 Then a = a + 1  
If a = 0 Then a = a + 2  
s = b - a + 1  
For i = a To b  
 c = CInt(Sqr(i))  
 For j = 2 To c Step 1  
 If i Mod j = 0 Then  
 s = s - 1  
 Exit For  
 End If  
 Next j  
Next i  
msgti$ = "数字" & Str(a) & "与数字" & Str(b) & "之间素数的个数为" & Str(s) & "个"  
MsgBox (msgti)  
Unload Me  
End Sub  

原作: 斌……斌  
 
  
 作者: cbm666   2007-7-3 16:33   回复此发言    
 
--------------------------------------------------------------------------------
 
3 回复:【CBM666 的素数 [质数]】  
 Option Explicit 

Private Sub Command1_Click() 
 Dim a() As Long 
 a = FindPrime(500000) '0-50万 以内的素数 
End Sub 

Public Function FindPrime(ByVal n As Long) As Long() 
 Dim IntList() As Long, Ulen As Long, PrimeList() As Long 
 Dim i As Long, j As Long 
  
 '------------------------------------------ 
 Dim t1 As Single, t2 As Single '测速代码 
 t1 = Timer 
 '------------------------------------------ 

 Ulen = n - 1 
 ReDim IntList(n) As Long 
 For i = 2 To n: IntList(i - 1) = i: Next 
  
 For i = 2 To Int(Sqr(n)) 
 If IntList(i - 1) <> 0 Then 
 j = i * i 
 While j <= n 
 If IntList(j - 1) <> 0 Then 
 IntList(j - 1) = 0: Ulen = Ulen - 1 
 End If 
 j = j + i 
 Wend 
 End If 
 Next 
  
 j = 0 
 ReDim PrimeList(Ulen - 1) As Long 
  
 For i = 2 To n 
 If IntList(i - 1) <> 0 Then 
 PrimeList(j) = IntList(i - 1): j = j + 1 
 End If 
 Next 

 FindPrime = PrimeList 
  
 '------------------------------------------ 
 t2 = Timer '测速代码 
 MsgBox Format((t2 - t1) * 1000, "0.000 ms") 
 '------------------------------------------ 
End Function  
 
  
 作者: 59.172.190.*  2007-7-3 18:56   回复此发言    
 
--------------------------------------------------------------------------------
 
4 回复:【CBM666 的素数 [质数]】  
 '补充素数之和 

Private Sub Form_Load() 
Dim a%, b%, c%, i%, s% 
l1: a = Val(InputBox("请输入起始数字")) 
b = Val(InputBox("请输入末数字")) 
If b < a Or b = 0 Then MsgBox "输入有误,错误为:起始数<末数字": GoTo l1 
If a = 1 Then a = a + 1 
If a = 0 Then a = a + 2 
For i = a To b 
s = s + i 
Next i 
For i = a To b 
 c = CInt(Sqr(i)) 
 For j = 2 To c Step 1 
 If i Mod j = 0 Then 
 s = s - i 
 Exit For 
 End If 
 Next j 
Next i 
msgti$ = Str(a) & "与" & Str(b) & "之间所有素数的和为" & Str(s) 
MsgBox (msgti) 
Unload Me 
End Sub  
 
 

相关软件
暂无相关软件


1分 0
2分 0
3分 0
4分 0
5分 0
共有 0 人打分
平均得分:0


按字符查询:ABCDEFGHIJKLMNOPQRSTUVWXYZ0~9中文
下载图示: - 附汉化补丁 - 附注册 - 会员软件 - 推荐 - 最新添加
Rainight, 星旺坡 联网备案号:41092802000212 豫ICP备19032584号-1 页面执行时间: 0.11秒
业务QQ:80571569 手机:13030322310