📜  数组的不同素数(1)

📅  最后修改于: 2023-12-03 15:10:22.684000             🧑  作者: Mango

数组的不同素数

在编程中,我们常需要对一组数据进行处理,其中常涉及到筛选出该组数据中的素数。本文将介绍如何在给定的数组中找出所有不同的素数。

素数

素数指的是只能被1和自身整除的正整数。通常用P表示。例如,2、3、5、7、11等都是素数。

筛法求素数

筛法求素数是常用的一种方法。其基本思想是:用2去筛,即将2留下,将其他能被2整除的数剔除;再用下一个素数,也就是3去筛,将3留下,将其他能被3整除的数剔除;不断重复这个过程......。

在代码中,我们可以用一个数组来表示这个过程,将数组中索引所对应的元素表示为1或0,1表示该索引所对应的数是素数,0则表示该数不是素数。

下面是一个求不大于100的素数的代码片段:

def sieve_of_eratosthenes(n):
    primes = [1] * (n+1)
    primes[0], primes[1] = 0, 0
    for i in range(2, int(n**0.5)+1):
        if primes[i]:
            for j in range(i*i, n+1, i):
                primes[j] = 0
    return [i for i in range(n+1) if primes[i]]

primes = sieve_of_eratosthenes(100)
print(primes)

输出结果为:

[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]
在数组中筛选素数

有了求素数的方法,我们就可以在数组中筛选出所有的素数了。具体步骤如下:

  1. 定义一个空的set来存储不同的素数。
  2. 遍历数组,对每个数进行筛选,若为素数,则将其加入set中。
  3. 最后返回set。

下面是一个在数组中筛选素数的代码片段:

def find_prime_numbers(arr):
    primes = set()
    for num in arr:
        if num < 2:
            continue
        is_prime = True
        for i in range(2, int(num**0.5)+1):
            if num % i == 0:
                is_prime = False
                break
        if is_prime:
            primes.add(num)
    return primes

arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
primes = find_prime_numbers(arr)
print(primes)

输出结果为:

{2, 3, 5, 7}
总结

本文介绍了如何求解素数以及在数组中筛选素数的方法。当我们需要对一组数据进行素数筛选时,可以考虑使用这些方法,从而得到想要的结果。