输出正整数n,m之间所有素数(0<=n<=m<=1000),并求所有素数之和
时间: 2023-05-01 19:02:07 浏览: 95
题目要求输出正整数n,m之间所有的素数(质数),并求它们的和。
解题思路:
1.首先将n和m之间的所有整数存储到一个列表中。
2.对列表中的每一个数,判断它是否为素数,如果是素数则添加到另一个列表中,同时累加素数的和。
3.输出素数列表和素数的和。
代码实现:
```
n, m = 1, 1000
nums = list(range(n, m+1)) # 存储n~m之间的所有整数
primes = [] # 存储素数的列表
sum_primes = 0 # 存储素数之和的变量
for num in nums:
if num < 2: # 排除小于2的数,因为1既不是素数也不是合数
continue
is_prime = True # 假设num是素数
for i in range(2, int(num ** 0.5)+1):
if num % i == 0: # 如果num可以被i整除,说明num不是素数
is_prime = False
break
if is_prime: # 如果num是素数,将其添加到primes列表中,并累加到sum_primes变量中
primes.append(num)
sum_primes += num
print(primes) # 输出素数列表
print(sum_primes) # 输出素数之和
```
相关问题
整数之间的素数 描述:求指定的两个整数m、n之间的素数(m<=n) 输入:只有一行,是空格隔开的两个正整数m和n。(m<=n) 输出:在m和n之间(含m和n)的所有素数,按照每个数据占6列,每行5个数据输出
以下是Python代码实现:
```python
def is_prime(num):
if num <= 1:
return False
for i in range(2, int(num**0.5)+1):
if num % i == 0:
return False
return True
m, n = map(int, input().split())
cnt = 0
for i in range(m, n+1):
if is_prime(i):
print('{:<6}'.format(i), end='')
cnt += 1
if cnt % 5 == 0:
print()
if cnt % 5 != 0:
print()
```
首先定义一个判断素数的函数 `is_prime(num)`,接着读入两个整数m和n。
然后用循环遍历从m到n之间的所有整数,如果是素数就输出,同时计数器cnt加一。每输出5个素数就换行。注意最后一行不足5个素数的情况也要换行。
例如,输入:
```
20 50
```
输出:
```
23 29 31 37 41
43 47
```
求指定的两个整数m、n之间的素数(m<=n) 输入:只有一行,是空格隔开的两个正整数m和n。(m<=n) 输出:在m和n之间(含m和n)的所有素数,按照每个数据占6列,每行5个数据输出
以下是 Python 代码实现:
```python
m, n = map(int, input().split())
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
count = 0
for i in range(m, n+1):
if is_prime(i):
print("{:6d}".format(i), end='')
count += 1
if count == 5:
print()
count = 0
if count != 0:
print()
```
输入示例:
```
10 50
```
输出示例:
```
11 13 17 19 23
29 31 37 41 43
47
```
阅读全文