【Python】 PAT 1007 素数对猜想

问题描述:

在这里插入图片描述

解题思路:

1、素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数。
2、为了提速先排除2和3的倍数,然后从5开始排除。方法是用N去除从5到N的算术平方根之间的整数,
如果能除尽,N为合数,如果都除不尽,N就是素数。
3、将素数存入列表,然后判断后一位与当前位是否差2。

Python 代码:(偶尔超时)

import math


def prime(num):
    if num != 2 and num % 2 == 0 or num != 3 and num % 3 == 0:  # 为了提速先排除2和3的倍数,然后从5开始排除
        return False
    for i in range(5, int(math.sqrt(num) + 1), 2):
        if num % i == 0:
            return False
    return True


n = int(input())
li = [i for i in range(2, n + 1) if prime(i) and prime(i + 2) and (i + 2 <= n)]  # 每组素数对都应该是素数且相差2,将满足条件的素数放入li
print(len(li))
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值