素数怎么判断,for循环判断是不是素数( 二 )



对于一定范围内的素数数目的计算
尽管整个素数是无穷的 , 仍然有人会问“100000以下有多少个素数?” , “一个随机的100位数多大可能是素数?” 。 素数定理可以回答此问题 。

检验素数
检查一个正整数N是否为素数 , 最简单的方法就是试除法 , 将该数N用小于等于根号N的所有素数去试除 , 若均无法整除 , N则为素数 , 参见素数判定法则 。
2002年 , 印度人M. Agrawal、N. Kayal以及N. Saxena提出了AKS质数测试算法 , 证明了可以在多项式时间内检验是否为素数 。

质数数表
1000以内
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199 211 223 227 229
233 239 241 251 257 263 269 271 277 281
283 293 307 311 313 317 331 337 347 349
353 359 367 373 379 383 389 397 401 409
419 421 431 433 439 443 449 457 461 463
467 479 487 491 499 503 509 521 523 541
547 557 563 569 571 577 587 593 599 601
607 613 617 619 631 641 643 647 653 659
661 673 677 683 691 701 709 719 727 733
739 743 751 757 761 769 773 787 797 809
811 821 823 827 829 839 853 857 859 863
877 881 883 887 907 911 919 929 937 941
947 953 967 971 977 983 991 997(168个)
用计算机如何判断素数 方法一、用试除法判断一个自然数a是不是质数时 , 用各个质数从小到大依次去除a , 如果到某一个质数正好整除 , 这个a就可以断定不是质数;如果不能整除 , 当不完全商又小于这个质数时 , 就不必再继续试除 , 可以断定a必然是质数.

方法二、只要找出x为一个奇数和一个偶数平方差的形式(这是一定的)便可以a2-b2=(a+b)(a-b)便是两个因数 。
例如26341 , 先找出比26341大的一个偶平方数 , 26896 , 与它的差是555 , 肯定不是平方数 , 再下一个平方数(其实考虑到(x+1)^2=x2+2x+1 , 因此直接将原数加上2x+1就行了 , 用不着算x+1的平方) , 27556 ,  差1215 , 也不是 , 然后28224个位与1的差为3 , 直接排除 , 下一个2559也不是(一看就知道它等于50^2+59) 。 再下个差为3直接排出 , 再下个、再再下个……找出规律来就很快了 , 最后221^2=48841,48841-26341=22500 , 很明显22500=150^2 , 就分解出来了26341=71×371
C语言中怎么判断素数 1、查表法:
主要是指查“质数表” 。 编制质数表的过程是:按照自然数列 , 第一个数1不是质数 , 因此要除外 , 然后按顺序写出2至100的所有自然数 , 这些数中2是质数 , 把它留下 , 把2后面所有2的倍数划去 , 2后面的3是质数 , 接着再把3后面所有3的倍数划去 , 如此继续下去 , 剩下的便是100以内的全部质数 。
2、试除法:
在手头上没有质数表的情况下 , 可以用试除法来判断一个自然数是不是质数 。 例如判断143、179是不是质数 , 就可以按从小到大的顺序用2、3、5、7、11……等质数去试除 。 一般情况下用20以内的2、3、5、7、11、13、17、19这8个质数去除就可以了 。
如143 , 这个数的个位是3 , 排除了被2、5整除的可能性 , 它各位数字的和是1+4+3=8 , 也不可能被3整除 , 通过口算也证明不能被7整除 , 当试除到11时 , 商正好是13 , 到此就可以断定143不是质数 。

推荐阅读