匿名用户

1级

2016-09-04 回答

基本思想

用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。如有: 1 2 3 4 5 6 7 8 9 10

11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

1不是素数,去掉。剩下的数中2最小,是素数,去掉2的倍数,余下的数是:

3 5 7 9 11 13 15 17 19 21 23 25 27 29

剩下的数中3最小,是素数,去掉3的倍数,如此下去直到所有的数都被筛完,求出的素数为: 2 3 5 7 11 13 17 19 23 29

C语言实现

1、算法一:令A为素数,则A*N(N>1;N为自然数)都不是素数。

#define range 2000 bool IsPrime[range+1];

//set函数确定i是否为素数,结果储存在IsPrime[i]中,此函数在DEV C++中测试通过 void set(bool IsPrime[]) { int i,j;

for(i=0;i<=range;++i) IsPrime[i]=true;

IsPrime[0]=IsPrime[1]=false; for(i=2;i<=range;++i) {

if(IsPrime[i]) {

for(j=2*i;j<=range;j+=i) IsPrime[j]=false; } } } 2、

说明:解决这个问题的诀窍是如何安排删除的次序,使得每一个非质数都只被删除一次。 中学时学过一个因式分解定理,他说任何一个非质(合)数都可以分解成质数的连乘积。例如,16=4^2,18=2 * 3^2,

691488=2^5 * 3^2 * 7^4等。如果把因式分解中最小质数写在最左边,有16=4^2,18=2*9,691488=2^5 * 21609,;换句话说,把合数N写成N=p^k * q,此时q当然是大于p的,因为p是因式分解中最小的质数。由于因式分解的唯一性,任何一个合数N,写成N=p^k * q;的方式也是唯一的。 由于q>=p的关系,因此在删除非质数时,如果已知p是质数,可以先删除P^2,p^3,p^4,... ,再删除pq,p^2*q,p^3*q,...,(q是比p大而没有被删除的数),一直到pq>N为止。

因为每个非质数都只被删除一次,可想而知,这个程序的速度一定相当快。依据Gries与Misra的文章,线性的时间,也就是与N成正比的时间就足够了(此时要找出2N的质数)。

素数 c语言 时间少,C语言判断素数怎么优化时间,1000000以内,不用代码,指点一下就好...相关推荐

  1. 费尔马小定理素数java_利用费马小定理判断素数

    今天听了ljss神犇的数论课,顿时感觉----我真的是太弱啦! 我只能稍微写一下我能听懂的部分orz 那么这就是今天我为数不多能听懂一点的之一......QAQ 首先先介绍今天的主角:费马小定理 -- ...

  2. python求最大素数_Python实现求最大公约数及判断素数的方法

    本文实例讲述了Python实现求最大公约数及判断素数的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python def showMaxFactor(num): cou ...

  3. C语言判断素数方法之试除法

    素数又称质数,指的是一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数,如2,3,5,7,11,13,17-.接下来让我们以打印区间[a,b]内所有素数为目标来探究一种判断素数 ...

  4. 背口诀14天精通c语言pdf下载,C语言必背18个经典程序

    C语言必背18个经典程序 1./*输出9*9口诀.共9行9列,i控制行,j控制列.*/ #include "stdio.h" main() {int i,j,result; for ...

  5. c语言sort函数_C语言经典面试题目及答案详解(二)

    接着上次来说,C语言经典面试题目及答案详解(一)当中大部分是一些概念和理解的东西 ,今天说一说实践操作,有关c的经典程序. 1.输出9*9口诀.共9行9列,i控制行,j控制列. #include 2. ...

  6. 判断素数及其算法优化

    首先,我们要清楚什么是素数? 素数:又称质数,一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数. 根据素数的定义,我们可以写 ...

  7. php判断质数,php如何判断是否为素数?判断素数的三种方法(代码示例)

    本篇文章给大家带来的内容是介绍php如何判断是否为素数?判断素数的三种方法(代码示例).有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 什么是素数? 质数又称素数.一个大于1的自然数 ...

  8. ACMNO.23 C语言-素数判定 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。 输入 一个数 输出 如果是素数输出prime 如果不是输出not prime

    题目描述 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息. 输入 一个数 输出 如果是素数输出prime 如果不是输出not prime 样例输入 97 样例输出 prime 来源/ ...

  9. java 语言如何判断素数_C语言实验之判断素数(循环结构java)方法讲解

    C语言实验之判断素数(循环结构java)方法讲解 Problem Description 从键盘上输入任意一个正整数,然后判断该数是否为素数. 如果是素数则输出"This is a prim ...

最新文章

  1. hdu 1306(字符串匹配)
  2. iOS - 获取安装所有App的Bundle ID
  3. tcl mysql_MySQL·TCL语言
  4. 【Clickhouse】Clickhouse PRIMARY KEY, CONSTRAINT, identifier, column declaration, INDEX
  5. 百度地图 json 区域 数据_获取百度地图可视区域范围的数据
  6. 2021年校招软件测试工程师经典面试题,月薪15K你需要掌握哪些知识点?
  7. 常用idea快捷键大全
  8. YOLO V2论文理解
  9. 抓包与发流软件与网络诊断
  10. 多线程_18_并发_同步_快乐影院_快乐火车票
  11. 快速搭建pgadmin4环境
  12. 如何设置Mosek的最大迭代次数?
  13. SpringBoot-Bean作用域
  14. 移动混合开发框架+Android原生模块化/组件化
  15. 用学校邮箱使用微软OneDrive云存储空间5120G
  16. Java-购物车实践与应用
  17. Python学习笔记(一)——Anaconda安装与配置(windows)
  18. [Render] Arm Graphics Analyzer 用户指南 [4] - 分析你的捕获
  19. Vins_mono重力对齐理解
  20. 天龙单机虚拟服务器,最新2021新天龙八部单机版一键端 虚拟机安装带假人天龙八部网单游戏...

热门文章

  1. Composer学习之————Ubuntu14.04下安装Composer
  2. Crawler - 如何爬取列表后进行文章的爬取
  3. mysql优化--叶金荣老师讲座笔记
  4. 30岁之前需要知道的10个人生底线,你知道几个?
  5. 页面增加html,为静态页面HTML增加session功能
  6. mycat mysql ha 方案_7、基于 HA 机制的 Mycat 高可用--mycat
  7. mysql distinct两列_正在检索两列,并对MySQL中的每列应用“distinct”
  8. [转载] java程序员快速学c++
  9. ping/pong模式_PING的完整形式是什么?
  10. scala运算符_Scala的所有符号运算符是什么意思?