python找质数对

本文介绍如何使用Python编程找出连续的质数对,探讨相关算法和实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python找质数对

        编写python脚本,输入一个正整数,输出有几对质数的和等于这个正整数。
        例如输入一个正整数10,可以找出有“3+7=10”、“5+5=10”两个质数对的和为10。


        要实现这个功能的python脚本如下所示:
def isprime(num):
    for i in range(2, num):
        if num % i == 0:
            return False
    return True


Number = input("Please input a number : ")
Prime = [i for i in range(1, Number) if isprime(i)]
List = [(i, Number - i) for i in Prime if isprime(Number - i) and i <= Number-i]
print List
print len(List)
        该脚本运行后的效果图如下图所示:

这里写图片描述

        由效果图可以看出,输入10后,输出质数对(3,7)和(5,5),并输出有两个质数对。输入7和12后均有相应的效果。
### 使用Python实现素计算的方法 以下是几种常见的方法来编写运行用于寻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 find_primes(n): primes = [] current_num = 2 while len(primes) < n: if is_prime(current_num): primes.append(current_num) current_num += 1 return primes n = int(input("请输入要查多少个素: ")) print(find_primes(n)) ``` 此代码片段利用了一个辅助函 `is_prime` 来检测单个值是否为素,并通过主函 `find_primes` 实现连续获取前 N 个素的目标[^1]。 --- #### 方法二:埃拉托斯特尼筛法 (Sieve of Eratosthenes) 这是一种高效的算法,适用于一次性找出小于某特定值的所有素。 ```python def sieve_of_eratosthenes(limit): sieve = [True] * (limit + 1) sieve[0:2] = [False, False] sqrt_limit = int(limit ** 0.5) for number in range(2, sqrt_limit + 1): if sieve[number]: for multiple in range(number*number, limit + 1, number): sieve[multiple] = False primes = [num for num, is_prime in enumerate(sieve) if is_prime] return primes limit = int(input("请输入上限值以到该范围内所有素: ")) primes = sieve_of_eratosthenes(limit) print(primes) ``` 这段代码实现了经典的埃拉托斯特尼筛选技术,能够快速定位给定区间内的全部素[^3]。 --- #### 方法三:生成器方式 如果希望采用更节省内存的方式,则可考虑使用生成器表达式逐步产出每一个新发现的素。 ```python def generate_primes(): yield 2 found = set() candidate = 3 while True: if all(candidate % prime != 0 for prime in found): yield candidate found.add(candidate) candidate += 2 generator = generate_primes() n = int(input("请输入想要获得几个素: ")) for _ in range(n): print(next(generator)) ``` 这里定义了一个无限生成素序列的生成器函 `generate_primes` ,并通过调用其迭代接口逐次打印所需量的素项[^2]。 --- ### 运行说明 以上三种方案均可独立保存至 `.py` 文件中并借助命令行工具执行。例如,在 Linux 或 macOS 下打开终端窗口进入文件所在目录后键入 python 脚本名;而在 Windows 平台上则启动 CMD 提示符完成相同操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值