素数

丶灬走出姿态 提交于 2020-11-26 05:23:41

问题描述:

素数(质数)指的是不能被分解的数,除了1和它本身之外就没有其他数能够整除。
求100以内的所有素数。

我的代码:

import math
def prime(n):
    count=0
    for i in range(2,int(math.sqrt(n))+1):
        if n%i==0:
            count=1
    if count!=1:
        return True
    else:
        return False
a=[]
for j in range(2,100):
    if prime(j):
        a.append(j)
print a

结果:

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]


我的思路:

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


大致流程是:先定义一个函数,判断传入的数是否为素数,然后使用该函数遍历100以内的数,将满足的数添加进列表,最后再输出;

其中,count是一个状态检查器,值为1时表示不是素数,为0时表示是素数;


示例代码:

def isPrimeNumber(n, s):
    for k in s:
        if k * k > n: break
        if n % k == 0: return None
    return n
prime = []
for n in range(2, 100):
    res = isPrimeNumber(n, prime)
    if res: prime.append(res)
print prime


代码分析:

示例代码不是用一个数的2到n的平方根之间的所有整数去除,而是用所有的素数平方值小于该数之间的素数去除,所以,函数内,第一个if语句是判断(都是素数)列表s内的数的平方值大小,只保留小于n的素数,第二个if语句是判断n是否可以整除保留的素数,只有都无法整除时才说明n是一个素数并返回。

最后,遍历2到100以内的数,将满足函数的赋给res并添加进素数列表prime中,供下次使用;



题目出处:http://www.cheemoedu.com/exercise/19

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!