`
cjc
  • 浏览: 674264 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

素数的快速列举

阅读更多

好久没来这里了。最近看了一些数论方面的文章,受益匪浅。想到我们初学VB时,利用循环查找素数是必修之课,随手写了两段列举素数的代码,并详细注释。自己感觉还是比较快的。 代码如下:


'*******************************************************************************
'  Target:to get all prime numbers smaller than a certain number      

'    Author:northwolves                                                                            

'   Reference:"Sieve of Eratosthenes"                                                    

 '   Createdate:2005-04-18 00:00:00                                                   

'*******************************************************************************

Sub showprime1(ByVal max As Long) 'find all prime numbers smaller than max(max>=3)

Dim p() As Long, i As Long, j As Long, number As Long, sqrtmax As Long, beprime As Boolean 'difinations

number = 1
ReDim p(1 To number)
p(1) = 2 ' the unique even prime number
Debug.Print p(1) 'show the first prime number

If max < 3 Then Exit Sub 'since we want do something

For i = 3 To max Step 2 ' skip those even number
     sqrtmax = Int(Sqr(i)) + 1 'get the largest non-self factor  of i
     beprime = True ' init
  For j = 1 To number ' try all primer numbers we have found before.
      If i Mod p(j) = 0 Then beprime = False: Exit For 'not a prime number
      If p(j) > sqrtmax Then Exit For 'unless we'll waste our time
  Next
 
  If beprime = True Then ' then it is a prime number
      number = number + 1 'add to it's count
      ReDim Preserve p(1 To number) 'define again
      p(number) = i
      Debug.Print i ' output the prime number
  End If

Next
Debug.Print "There are " & number & " prime numbers below " & max ' show some message

End Sub
Private Sub Command1_Click() ' show all prime numbers smaller than 100000
showprime1 100000
End Sub


'************************************************************************
'   Target:to get the first n prime numbers from 2,3,....       

'    Author:northwolves                                                   

'    Reference:"Sieve of Eratosthenes"                             

'   Createdate:2005-04-18 00:00:00                               

'************************************************************************

Sub showprime2(ByVal n As Long) ' get the first n(n>1) prime numbers

Dim p() As Long, i As Long, j As Long, number As Long, sqrtmax As Long, beprime As Boolean

number = 1
ReDim p(1 To number)
p(1) = 2 ' the unique even prime number
Debug.Print 2 'show the first prime number

If n < 2 Then Exit Sub 'since we want do something
i = 3
Do While number <= n
       sqrtmax = Int(Sqr(i)) + 1 'get the largest non-self factor  of max
       beprime = True ' init
    For j = 1 To number ' try all primer numbers we have found before.
   
        If i Mod p(j) = 0 Then beprime = False: Exit For 'not a prime number
        If p(j) > sqrtmax Then Exit For 'unless we'll waste our time
       
    Next
   
    If beprime = True Then ' then it is a prime number
        number = number + 1 'add to it's count
        ReDim Preserve p(1 To number) 'define again
        p(number) = i
        Debug.Print i ' output the prime number
    End If
i = i + 2 ' skip those even number
Loop

Debug.Print "The " & n & " prime Number Is " & p(number); "" ' show some message

End Sub

Private Sub Command2_Click() ' show the first 1000 prime numbers
showprime2 1000
End Sub

分享到:
评论

相关推荐

    1亿以内的素数表.rar

    这个压缩包包含的“1亿以内的素数表.txt”文件,是一个文本文件,里面列举了从2到大约1亿之间所有的素数。这样的数据集合对于各种计算任务非常有用,比如: 1. **算法验证**:程序员在编写素数检测算法时,可以使用...

    《质数与合数》课件.ppt

    在最后的小结部分,学生应该能够熟练地判断质数和合数,并快速列举出20以内的所有质数。这种能力对于解决涉及质数和合数的问题至关重要,不仅在数学课程中,也在后续的编程和密码学等IT领域中有应用。例如,在密码学...

    质数与合数.docx

    首先,质数(又称素数)是指在大于1的自然数中,除了1和它本身以外没有其他正因数的数。例如,2、3、5、7、11、13等都是质数。质数是构成所有自然数的基本“砖块”,因为任何大于1的自然数要么本身就是质数,要么...

    质数和合数.docx

    质数(或素数)是指大于1的自然数,它只有两个正因数,即1和它本身。例如,2、3、5、7、11、13、17、19等都是质数。质数是构成所有自然数的基本单元,因为任何大于1的自然数要么是质数,要么可以表示为若干个质数的...

    《质数与合数》教学设计.doc

    质数也叫做素数,一个数如果只有1和它本身两个约数,那么它就是质数。反之,如果一个数除了1和它本身还有其他约数,那么它就是合数。 在教学过程中,教师通过实例让学生掌握判断质数和合数的方法,比如检查一个数的...

    五年级数学上册 找质数 4课件 北师大版 课件.ppt

    在课堂练习环节,学生被要求快速识别一系列数中的质数和合数,例如17、21、29、36等。17、29、97是质数,而21、36、93是合数。此外,1既不是质数也不是合数。100以内的所有质数也被列举出来,以便学生记忆和熟悉。 ...

    春人教五年级数学下册质数和合数PPT学习教案.pptx

    记住这些质数有助于快速判断其他数的性质,并在解决涉及质数的问题时提供便利。 通过以上内容,我们可以明白质数和合数的概念及其在自然数分类中的应用,这对于理解更高级的数学概念,如素数分解、模运算等,具有...

    人教版五年级数学下册质数和合数PPT教案.pptx

    在人教版五年级数学下册的...最后,PPT鼓励学生快速记忆20以内的质数,并要求他们举例说明质数和合数的定义,以加深理解和记忆。通过这些活动,学生能够更好地掌握质数与合数的概念,为进一步学习数学打下坚实基础。

    linkfqy#CSDN_blog_backup#关于素数筛法的一点讨论1

    前言在数论领域,解决问题时经常会有得到素数的需求如何快速得到一定范围内的所有素数,就成了人们一直追求的问题这里列举一些素数筛法,也许会有帮助埃氏筛法(Sieve

    杂凑表 ppt 杂凑算法列举

    1. 除法方法(division method):H(key) = key mod p,其中p是哈希表的大小,通常是质数,以减少碰撞。 2. 平方取中间为数法(mid-square method):将键值平方后取中间部分作为哈希值。 3. 取模乘法法...

    ACM模板 2020.10.pdf

    这些算法可以帮助快速处理素数相关问题。另外,还有欧拉函数、莫比乌斯函数以及线性筛约数个数和约数和的算法,这些是处理数论问题中不可或缺的工具。扩展欧几里得算法和中国剩余定理用于求解同余方程,而勒让德定理...

    一些数学知识_王若松.ppt

    文档中列举了几个典型的问题,如求两个非负整数和、乘积、差的模运算结果,以及快速幂的运用。 3. **快速幂**: 快速幂是一种高效的计算幂次的方法,通过将指数分解成二进制形式,每次将底数自乘并根据指数的奇偶...

    五年级期末总复习PPT学习教案.pptx

    最后,文档深入到自然数按照因数个数的分类,区分了质数和合数,强调了1既不属于质数也不属于合数,最小的质数是2,最小的合数是4,并列举了20以内和100以内的质数列表。 在找质数和合数的技巧方面,提出了可以通过...

    公务员行测必备数学公式总结(全)汇总.doc

    提供了从2到199的所有质数,这对于快速判断一个数是否为质数很有帮助。 3. **整除判定** - **能被2整除的数**:末尾数字为2的倍数(偶数) - **能被3整除的数**:各数位数字之和是3的倍数 - **能被5整除的数**...

    2020-2021学年五年级下学期期末考试数学试卷及答案.pdf

    8. 素数和合数的特性应用。 9. 分解质因数的正确方法。 10. 体积和表面积的计算。 11. 长度单位之间的转换。 12. 自然数与分数的关系,真分数与假分数的区分。 13. 最大公因数的计算。 14. 组合立体图形的特征描述。...

    信息安全数学基础答案

    而在第11题中,通过排除法找到了所有小于500的素数,这是在素数筛法中常见的做法,用于快速找到一定范围内的素数。 最后,题目中涉及到反证法证明,如第12题和13题,证明了形如3k±1的数中,可以找到相同形式的素...

    北京课改版小学数学五年级下册全册期末专题复习课件.pptx

    对于求最大公因数和最小公倍数的方法,课件提到了两种情况:一是两个数有特殊关系(如互质或倍数关系),二是没有特殊关系时,需要列举因数或倍数来找到答案。 在合数与质数的讨论中,课件定义了质数是只有1和其...

    自用的一些acm代码模板

    9. 素数:涉及到一些素数的生成和判断方法,如素数bitset线性筛法、欧拉筛、Miller-Rabin素数测试算法等。 10. 其他知识点:还包含了一些杂项算法和技术,例如n皇后问题、卡特兰数、组合数的快速计算(卢卡斯定理)...

    当今世界最为经典的十大算法-投票进行时.pdf

    3. **米勒-拉宾素数测试 (Miller-Rabin Primality Test)**:这是一种概率性测试,用于判断一个大整数是否为素数。基于费马小定理,通过多次随机抽样来判断,虽然可能存在错误判断,但正确率随着测试次数增加而提高。...

    五年级数学下册1倍数与因数单元概述和课时安排素材西师大版

    教材通过乘法情境帮助学生理解这两个概念,通过列举乘法算式来找到一个数的倍数和因数。 随后,学生会学习2、3、5的倍数特征,这对于快速识别这些数的倍数至关重要。例如,2的倍数总是偶数,3的倍数各数字之和为3的...

Global site tag (gtag.js) - Google Analytics