计算素数

题目1:计算0-100的所有的素数。

素数:素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

很容易得出下面的代码

def get_prime(n):
    res = []
    for i in range(2, n):
        for j in range(2, i):
            if i % j == 0:
                break
        else:
            res.append(i)
    return res

求素数

但是经过分析,我们发现完全可以利用已知的信息,如果一个数不是素数,那么它的所有整数倍也肯定不是素数,因此,我们只需要判断,它是否是素数的整数倍就可以了。

然后经过优化后的代码可以写成:

def get_prime1(n):
    res = []
    for i in range(2, n):
        for j in res:
            if i % j == 0:
                break
        else:
            res.append(i)
    return res

求素数(优化)

题目2:判断一个数是否为素数

在一般领域,对正整数n,如果用2到 之间的所有整数去除,均无法整除,则n为质数。

def is_prime(num):
    import math
    if num == 1:
        return False
    for i in (2, int(math.sqrt(num)) + 1):
        if num % i == 0:
            return False
    return True

判断素数

原文地址:https://www.cnblogs.com/walle-zhao/p/11680269.html

时间: 2024-11-25 17:19:39

计算素数的相关文章

codevs 2945 计算素数

题目描述 Description 计算[A,B](区间包括A和B,2<=A<=B<=18000000)之间,一共有多少素数? 输入描述 Input Description 一行两个数A和B 输出描述 Output Description 一个数,表示素数的个数 样例输入 Sample Input 3 10 样例输出 Sample Output 3 数据范围及提示 Data Size & Hint 2<=A<=B<=18000000 思路: 素数筛+枚举 代码:

计算素数的另一种方法

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

计算素数。

素数:能被1和它本身整除的数.根据它的定义,可知素数不能被其他数整除,那么从1开始循环到它本身,判断取模是否为0.考虑乘法本身的特点,最大可以是的平方根.所以代码如下: /// <summary>        /// 素数,平方根以内数全部不能整除,则是素数.        /// </summary>        public static void TestNewYear2()        { StringBuilder sb = new StringBuilder();

HDU2136_Largest prime factor【水题】【筛法求素数】

Largest prime factor Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7216    Accepted Submission(s): 2559 Problem Description Everybody knows any number can be combined by the prime number. Now

用算法求N(N&gt;=3)之内素数的个数

首先,我们谈一下素数的定义,什么是素数?除了1和它本身外,不能被其他自然数整除(除0以外)的数 称之为素数(质数):否则称为合数. 根据素数的定义,在解决这个问题上,一开始我想到的方法是从3到N之间每个奇数进行遍历,然后再按照素数的定义去逐个除以3到 根号N之间的奇数,就可以计算素数的个数了. 于是便编写了下面的代码: (代码是用C++编写的) #include<iostream> #include <time.h> using namespace std; #define N 1

记一次使用快速幂与Miller-Rabin的大素数生成算法

大家都知道RSA的加密的安全性就是能够找到一个合适的大素数,而现在判断大素数的办法有许多,比如Fermat素性测试或者Miller-Rabin素性测试,而这里我用了Miller-Rabin素性测试的算法,具体的理论我写到下面. 算法的理论基础: Fermat定理:若n是奇素数,a是任意正整数(1≤ a≤ n?1),则 a^(n-1) ≡ 1 mod n. 2.  如果n是一个奇素数,将n?1表示成2^s*r的形式,r是奇数,a与n是互素的任何随机整数,那么a^r ≡ 1 mod n或者对某个j

埃氏筛法(快速筛选n以内素数的个数)

给你一个数n,请问n以内有多少个素数?(n <= 10e7) 一般来说,要是对一个整数进行素数判断,首先想到的是写个函数判断是否为素数,然后调用这个函数,时间复杂度为O(n^(½)),但是要求n以内的素数就略显吃力了. 要是求n以内的素数个数的话,可以用埃式筛选.预处理一下. 先看下面的代码: 1 /* 2 |埃式筛法| 3 |快速筛选素数| |15-7-26| 4 */ 5 #include <iostream> 6 #include <cstdio> 7 using na

如何用PHP求素数

<?phpheader("content-type:text/html;charset=utf-8");//设置编码格式//计算素数,素数是只能被自己和1整除的正整数,特别指出的是我们规定1不是素数/*方法一:定义一个函数计算素数function prime_Number($n){ $c=0;//计数器初始化 for($i=1;$i<=$n;$i++) {if($n % $i==0) { $c++; } } if($c==2)//如果能够整除这个数只有1个或者2个,那么它就

求100—200之间的全部素数

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 求100—200之间的全部素数