哥德巴赫猜想验证:分解偶数为两个素数之和
哥德巴赫猜想验证:分解偶数为两个素数之和
描述:
伟大的哥德巴赫猜想声称:任何一个大于 6 的偶数总可以分解为两个素数之和。现在,请你编程验证哥德巴赫猜想,即输入一个大于 6 的偶数 n ,将其分解为两个素数之和输出。如果有多种分解答案,请输出字典序最小的那一个。
输入描述:
一行一个正整数 n 。
输出描述:
一行一个表达式,表示字典序最小的一种分解方法,具体格式参见样例。
用例输入 1:
6 用例输出 1:
6=3+3
用例输入 2:
14 用例输出 2:
14=3+11
思路:
- 首先定义一个函数
is_prime(n)来判断一个数是否为素数,如果是素数则返回True,否则返回False。 - 对于给定的偶数 n,从 2 开始遍历到 n//2,依次判断每个数 i 是否为素数。
- 如果 i 是素数,那么判断 n-i 是否也是素数,如果是素数则找到了一种分解方法,输出结果并结束程序。
- 如果遍历完所有的数都没有找到满足条件的分解方法,则输出 'No solution'。
时间复杂度分析:
假设 n 是给定的偶数,那么在最坏情况下,需要遍历 n//2 个数来判断是否为素数,所以时间复杂度为 O(n)。
实现代码如下:
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
n = int(input())
for i in range(2, n // 2 + 1):
if is_prime(i) and is_prime(n - i):
print(f'{n}={i}+{n-i}')
break
else:
print('No solution')
原文地址: http://www.cveoy.top/t/topic/qtEV 著作权归作者所有。请勿转载和采集!