质数算法

①需求:实现一个函数,对于给定的整型参数 N,该函数能够把自然数中,小于 N 的质数,从小到大打印出来。比如,当 N = 10,则打印出2 3 5 7
def is_prime(Num):

    i = 2
    if Num <= 1:
        return False
    if Num == 2:
        return True
    while i*i <= Num:
        if Num % i == 0:
            return False
        else:
            i += 1
    return True

if __name__ == ‘__main__‘:
    b = 10
    primes = [i for i in range(2,b) if is_prime(i)]
    print primes

				
时间: 2024-08-24 19:59:48

质数算法的相关文章

简化求质数算法

前几天做了个求质数题,这两天浏览算法题库,偶然看到了原题以及程序分析: 判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则为素数. 这样一来不用除到自身了都,显然更简单,同时还要对之前的方法进行点小修改,将记录是否为质数的boolean变量都去掉,哈哈,是不是很激动的想知道答案??? 话不多说都在代码里: var min = 100; var max = 200; for(var i = min; i <= max ; i++) { for(var j = 2; j <=

求质数算法

1. 循环嵌套,外层循环是从1-1000的数字i(1排除,这你应该明白),内层是对数字i的素数判断. 2. 素数:除了1和它本身外没有别的因子.也可以理解为:除了1和它本身,其他数来除它余数都不是0. 3. 所以内层循环用从2开始到i的平方根(取整)依次求余,因为到了平方根以后,再增加除数,得到的商是小于平方根的,等于以前取过的除数.所以平方根以后不用再算了. 1 class Test { 2 3 public static Boolean isPrime(int n) { 4 for (int

寻找质数算法

private static boolean isPrime(int num) { int sqrt = (int) Math.pow(num, 0.5) + 1; // 只要一条成立,则不是素数,因此使用i*6-1来定界 for (int i = 1; i * 6 - 1 <= sqrt; ++i) { if (num % (i * 6 - 1) == 0 || num % (i * 6 + 1) == 0) { return false; } } return true; } 原文地址:ht

求质数的各种算法

首先声明本人水平有限,仅仅做一下记录,有错的地方请指正,文章垃圾请包容!! 在网上不小心浏览到一篇技术博客,叫做<求质数算法的N种境界(N>10)>,写得很好,有兴趣的读者自己去搜索.然后就想自己去试试这篇博客里写得各种求质数的方法. 不想搭环境,就暂时用了PHP语言,在apache里运行,简易测试一下. 首先明确一下概念 质数(prime number)又称素数,有无限个.质数定义为在大于1的自然数中, 除了1和它本身以外不再有其他因数的数称为质数. 100以内质数表 2 3 5 7

Miller-Rabin质数测试

这种质数算法是基于费马小定理的一个扩展. 费马小定理:对于质数p和任意整数a,有a^p ≡ a(mod p)(同余).反之,若满足a^p ≡ a(mod p),p也有很大概率为质数. 将两边同时约去一个a,则有a^(p-1) ≡ 1(mod p) 也即是说:假设我们要测试n是否为质数.我们可以随机选取一个数a,然后计算a^(n-1) mod n,如果结果不为1,我们可以100%断定n不是质数. 否则我们再随机选取一个新的数a进行测试.如此反复多次,如果每次结果都是1,我们就假定n是质数. 该测试

常用算法

快速排序 维基百科详细说明 public static void QuickSort(int[] numbers, int left, int right) { if (left < right) { int middle = numbers[(left + right) / 2]; int i = left - 1; int j = right + 1; while (true) { while (numbers[++i] < middle) { } while (numbers[--j]

[转]挖矿算法比较

挖矿算法详情 开发挖矿程序需要熟悉CPU指令集.显卡指令集.显卡驱动.使用C++开发,关键地方要用汇编优化.大多数币的开发团队主要都是开发应用,对挖矿算法的开发很少,一般都是使用现有的挖矿算法,简单修改一下参数.挖矿算法开发的好,币不一定能成功:挖矿算法开发的差,币一定会失败. 很多币都是开发团队发布了钱包,刚开始只能钱包挖矿.过了几天,就有第三方做出来了CPU挖矿程序,收一点手续费.再过段时间,就有第三方做出来了显卡挖矿程序,也是收一点手续费.有些开发者以专门优化挖矿程序程序为主业. 挖矿算法

关于Java数组越界的一个诡异问题【leetcode204】

刷leetcode204时,质数计算,在看完改进算法后有个测试怎么也过不了,数据越界报错: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -2146737495 仔细看都没有找到原因,其中最后两行输出为: 499813 499979  701  713 -2146737495 499979  46349  46349 很纳闷,怎么突然从701跳到了46349,而且i*j<n也是验证过的,这

ExpertC题目 列出所有不大于N的素数

列出所有不大于N的素数 //------------------------------------------------------- 3.(1) 以sqrt(N)来逐个判断,优化可以只对1~N的奇数进行判断,分母为3~sqrt(N)的奇数,可以减少一半运行时间: (2)有更复杂的方法涉及到质数算法.厄拉多塞篩法 厄拉多塞篩法,小时候接触过. 西元前250年,希臘數學家.亞歷山大圖書館館長厄拉多塞(Eeatosthese)想到了一個非常美妙的質數篩法,減少了逐一檢查每個數的的步驟,可以比較簡