素数判定的几种方法及复杂度分析

一.朴素判断素数

1 bool PrimerNumber(int n)
2 {
3     for(int i = 2; i*i <= n; i++)
4     {
5         if(n % i == 0)
6             return false;
7     }
8     return true;
9 }

时间: 2024-10-25 04:19:30

素数判定的几种方法及复杂度分析的相关文章

HTML文本框只读的几种方法的优缺点简单分析

顾名思义,只读就是让不可编辑的名词,在编辑的过程中,往往有许多信息是不想让用户更改的,下面列出几种方法 并把他们的优缺点说出来. 第一种方法:readonly <input type="text"  value="男" readonly>或 <input type="text"  value="男" readonly="true"> 这个方法只读功能是好用的,但如果你选中里面的字体是

打印素数表的四种方法

题目:给出一个正整数n,打印出所有从1~n的素数(即质数); 1.傻瓜解法 1 int i,n; 2 while(scanf("%d",&n)!=EOF) 3 { 4 for(i=2;i<n;i++) 5 if(n%i==0) break; 6 if(i==n) printf("YES\n"); 7 else printf("NO\n"); 8 } 9 这是理所当然的想法,按照素数的定义,除了1和它本身没有其他的因数,就是素数. 这

计算素数的另一种方法

1 <?php 2 define("NUMBER", 1000); 3 $times = 0; 4 for ($i=2; $i < NUMBER; $i++) { 5 $prime[$i] = 1;//假设全为素数 6 7 if ($i%2==0&&$i!=2) { 8 $prime[$i] = 0;//合数 9 continute; 10 } 11 if ($i%3 == 0&&$i!=3) { 12 $prime[$i] = 0; 13

分析函数调用关系图(call graph)的几种方法

分析函数调用关系图(call graph)的几种方法 绘制函数调用关系图对理解大型程序大有帮助.我想大家都有过一边读源码(并在头脑中维护一个调用栈),一边在纸上画函数调用关系,然后整理成图的经历.如果运气好一点,借助调试器的单步跟踪功能和call stack窗口,能节约一些脑力.不过如果要分析的是脚本语言的代码,那多半只好老老实实用第一种方法了.如果在读代码之前,手边就有一份调用图,岂不妙哉?下面举出我知道的几种免费的分析C/C++函数调用关系的工具. 函数调用关系图(call graph)是图

C语言调试的几种方法

linux系统下,在不gdb调试的情况下,我们如何解决程序崩溃问题呢?首先想到的就是添加log日志信息,其次还有以下几种方法可以帮助我们分析存在的问题: (一)add2line 程序崩溃时会打出一些崩溃地方的地址空间,可以使用此方法显示崩溃地方对应的函数或者某一行,使用方法如下: echo "0x63d8a9" | addr2line -e bin/httpd -f  : 崩溃查对应代码行 (二)把出错时的堆栈信息打印出来,类似gdb调试中bt功能. #define BACKTRACE

PHP实现链式操作的三种方法详解

这篇文章主要介绍了PHP实现链式操作的三种方法,结合实例形式分析了php链式操作的相关实现技巧与使用注意事项,需要的朋友可以参考下 本文实例讲述了PHP实现链式操作的三种方法.分享给大家供大家参考,具体如下: 在php中有很多字符串函数,例如要先过滤字符串收尾的空格,再求出其长度,一般的写法是: strlen(trim($str)) 如果要实现类似js中的链式操作,比如像下面这样应该怎么写? $str->trim()->strlen() 下面分别用三种方式来实现: 方法一.使用魔法函数__ca

C语言编程输出100到200的素数的两种方法,和三步优化(逐步优化)

了解素数(只能被自己和1整除的数)概念后,写代码会容易很多 <1>这个版本的程序没有经过优化,是根据最基本的概念写出的代码 #include<stdio.h> #include<stdlib.h> int main() { int i, m; for (i = 100; i <= 200; i++) { for (m = 2; m <= i; m++) { if (i == m)//输出条件 printf("%4d", i); if (i

[Miller-Rabin][CODEVS1702]素数判定2 解题报告

题面描述:判定一个数P∈[1,2^63-1]∩N是素数么. 按照朴素的判定素数方法,至少也需要O(P^0.5)的,但这道题就是霸气到连这样的时间复杂度都过不了的地步. 实在是不会做了,就学习了传说中的Miller-Rabin素数判定法. 两个引理: ①费马小定理: 设p为质数,且不满足p|a, 则a^(p-1)=a(mod p). 证: 又一个引理,若n与p互质,且a与p互质,则n*a与p互质. 这真的是一个看似很简单的引理,但它却意味着一些看似不那么简单的事情. 设A=(0,p)∩N,则 ①对

素数判定相关资料

素数(质数)的判定 (1)最基本素数判定方法大家熟悉,只用看看2到n(或n的平方根)之间有没有n的约数: #include<stdio.h> void main() { int i,n; scanf("%d",&n); for(i=2;i<n;i++) if(n%i==0)break; if(i<n||n==1)puts("No"); else puts("Yes"); } 此方法适用于判定较少数,数据量大时会超时