找出100内的素数,把找出的素数放在数组中并输出显示
时间: 2024-05-14 07:13:46 浏览: 12
好的,对于您的第一个问题,我可以回答。以下是代码示例:
```python
def find_primes(n):
primes = []
for num in range(2, n+1):
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.append(num)
return primes
primes = find_primes(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]
```
请注意,这只是一个简单的算法示例,可能对于大型数字可能不够有效。如果您需要更高效的算法,可以搜索相关资料。
相关问题
用数组找出100内所有素数
好的,我可以给出一个简单的方法来解决这个问题。我们可以使用“筛法”,即“埃氏筛法”,它是一种非常高效的方法来找出一定范围内的素数。具体实现步骤如下:
1.创建一个长度为 101 的布尔类型数组 prime,其中 prime[i] 表示数值 i 是否是素数,初始值都为 true。
2.从 2 开始,枚举所有小于等于 10 的正整数 k,对于每个 k,如果 prime[k] 为 true,则将 k 的倍数(除 k 本身)标记为 false。
3.在标记完成后,所有 prime[i] 为 true 的 i 就是小于等于 100 的素数。
下面是具体实现的 Python 代码:
```
# 初始化布尔数组
prime = [True] * 101
# 0 和 1 不是素数
prime[0], prime[1] = False, False
# 埃氏筛法
for i in range(2, 11):
if prime[i]:
for j in range(i * 2, 101, i):
prime[j] = False
# 输出结果
for i in range(2, 101):
if prime[i]:
print(i, end=' ')
```
输出结果如下:
```
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
```
这个方法的时间复杂度是 O(n log log n),其中 n 是素数的上限。在这个问题中,n 等于 100,因此时间复杂度非常小,可以很快地找到所有小于等于 100 的素数。
找出一个数组里的素数并输出成另一个新数组
好的,我可以帮您实现这个功能。
同样是使用 Python 语言,可以这样写:
```python
def find_prime_numbers(arr):
primes = []
for num in arr:
if num < 2:
continue
elif num == 2 or num == 3:
primes.append(num)
elif num % 2 == 0:
continue
else:
is_prime = True
for i in range(3, int(num**0.5)+1, 2):
if num % i == 0:
is_prime = False
break
if is_prime:
primes.append(num)
return primes
# 测试
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new_arr = find_prime_numbers(arr)
print(new_arr)
```
运行结果如下:
```
[2, 3, 5, 7]
```
在这个示例中,我们定义了一个 `find_prime_numbers` 函数,它接受一个数组作为参数,并返回一个新的素数数组。我们通过遍历数组中的每个元素来判断它是否为素数,如果是素数则将其添加到新的数组中。最后,我们将新数组打印到控制台上以进行测试。