码迷,mamicode.com
首页 > 编程语言 > 详细

面试题:求质数的算法

时间:2019-08-17 13:09:44      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:bre   python   效率   def   pen   问题   main   质数   输出   

质数也就是大于1的整数中,除了1和它本身以外不能被其他整数整除的数,也叫素数。
问题:
现给定一个任意整型参数 N(N>1),求出小于N 的质数的个数。
 
 例如:
输入 10,输出:4(2,3,5,7);   
输入:20, 输出: 8(2,3,5,7,11,13,17,19);

针对小于N的每个正整数x,我们可以遍历从2到x-1遍历去试除,当出现一个数能被整除,那这个数就不是质数;当然这种方法也是最容易想到的方法,但效率也是最低的方法;

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

if __name__ == "__main__":
    n = 20
    print(prime( n))

 我们可以遍历从2到x/2的数去试除,这样子相对于第一种方法节省了近一半的时间; 

def prime( n):
        m = 0
        for i in range(2, n):
            for j in range(2, int(i/2)+1):
                if i % j == 0:
                    break
            else:
                m += 1
        return m

  

面试题:求质数的算法

标签:bre   python   效率   def   pen   问题   main   质数   输出   

原文地址:https://www.cnblogs.com/ivyharding/p/11367911.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!