数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。请自定义判断素数模块a.py,然后通过导入b.py实现模块化设计。 输入:输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。 输出:在一行中按照格式“N = p + q”输出N的素数分解,其中p≤q均为素数。又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解
时间: 2024-01-21 21:19:36 浏览: 29
a.py模块代码如下:
```python
import math
def is_prime(n):
if n <= 1:
return False
elif n == 2:
return True
elif n % 2 == 0:
return False
else:
for i in range(3, int(math.sqrt(n))+1, 2):
if n % i == 0:
return False
return True
```
b.py模块代码如下:
```python
from a import is_prime
import sys
def prime_decomposition(n):
for i in range(3, n//2+1, 2):
if is_prime(i) and is_prime(n-i):
print("{} = {} + {}".format(n, i, n-i))
break
if __name__ == '__main__':
n = int(sys.argv[1])
if n % 2 != 0 or n <= 2 or n > 2000000000:
print("请输入一个大于2且不大于2000000000的偶数")
else:
prime_decomposition(n)
```
运行b.py时,可以通过命令行参数传入一个偶数N,例如:
```python
python b.py 24
```
输出结果为:
```
24 = 3 + 21
```
说明24可以分解为3和21两个素数的和。由于要输出所有解中p最小的解,所以在找到第一个解的时候就直接输出并退出循环。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)