用python编写一个判断素数的函数,并打印100以内所有素数。
时间: 2024-02-03 11:16:00 浏览: 29
可以使用以下代码实现:
```python
def is_prime(num):
"""判断一个数是否为素数"""
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
for i in range(2, 101):
if is_prime(i):
print(i)
```
首先,`is_prime`函数用于判断一个数是否为素数。从2开始枚举到这个数平方根的整数部分(因为如果有一个因子大于这个数平方根,那么就一定有一个因子小于这个数平方根),如果发现有一个因子可以整除这个数,那么这个数就不是素数,返回`False`。否则,这个数就是素数,返回`True`。
然后,我们使用循环从2到100枚举每个数字,如果这个数字是素数,就打印出来。注意,100也是有可能是素数的,所以我们需要枚举到101而不是100。
相关问题
用python编写一个判断素数的函数,并打印100以内所有素数。我需要多种方法
方法一:暴力枚举法
暴力枚举法是最朴素的判断素数的方法,即遍历从2到目标数-1的所有自然数,判断目标数是否能被整除。如果能被整除,则目标数不是素数;反之,则是素数。
下面是代码实现:
```python
def is_prime(num):
if num <= 1:
return False
for i in range(2, num):
if num % i == 0:
return False
return True
for i in range(2, 101):
if is_prime(i):
print(i)
```
方法二:优化暴力枚举法
在暴力枚举法中,我们可以发现,如果一个数可以被分解成两个数的乘积,那么其中一个数肯定小于等于它的平方根。因此,在判断素数时,我们只需要遍历从2到目标数平方根的所有自然数。
下面是代码实现:
```python
import math
def is_prime(num):
if num <= 1:
return False
for i in range(2, int(math.sqrt(num)) + 1):
if num % i == 0:
return False
return True
for i in range(2, 101):
if is_prime(i):
print(i)
```
方法三:埃拉托斯特尼筛法
埃拉托斯特尼筛法是一种较为高效的素数筛法,其基本思想是从小到大枚举每个素数,然后将其倍数全部标记为合数。这样在后面的判断中就可以直接跳过这些合数。
下面是代码实现:
```python
def eratosthenes(n):
primes = []
is_prime = [True] * (n + 1)
for i in range(2, n + 1):
if is_prime[i]:
primes.append(i)
j = i * i
while j <= n:
is_prime[j] = False
j += i
return primes
primes = eratosthenes(100)
for prime in primes:
print(prime)
```
方法四:欧拉筛法
欧拉筛法是一种更为高效的素数筛法,其基本思想是在埃拉托斯特尼筛法的基础上,将每个合数标记为它的最小质因子,这样可以避免重复标记。具体实现可参考下面的代码:
```python
def euler(n):
primes = []
is_prime = [True] * (n + 1)
for i in range(2, n + 1):
if is_prime[i]:
primes.append(i)
for j in range(len(primes)):
if i * primes[j] > n:
break
is_prime[i * primes[j]] = False
if i % primes[j] == 0:
break
return primes
primes = euler(100)
for prime in primes:
print(prime)
```
以上四种方法都可以用来判断素数,并打印100以内所有素数。其中暴力枚举法是最简单的,但时间复杂度较高;而欧拉筛法则是最高效的,但实现较为复杂。根据实际需要选择不同的方法即可。
Python 编写一个函数,打印200以内的所有素数,以空格分隔
好的,以下是 Python 代码实现:
```python
def is_prime(num):
"""
判断一个数是否为素数
"""
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
def print_prime():
"""
打印200以内的所有素数,以空格分隔
"""
prime_list = []
for num in range(2, 201):
if is_prime(num):
prime_list.append(num)
print(' '.join(map(str, prime_list)))
print_prime()
```
解释一下代码:首先定义了一个判断是否为素数的函数 `is_prime()`,然后定义了一个打印素数的函数 `print_prime()`,在 `print_prime()` 中遍历从2到200的每个数字,如果是素数就加入到 `prime_list` 列表中。最后使用 `join()` 和 `map()` 函数将素数列表转换为以空格分隔的字符串并输出。