日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python】PAT-1007-素数对猜想

發布時間:2025/1/21 python 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】PAT-1007-素数对猜想 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 題目描述

1007 素數對猜想 (20 分)

讓我們定義d**n為:d**n=p**n+1?p**n,其中p**i是第i個素數。顯然有d1=1,且對于n>1有d**n是偶數?!八財祵Σ孪搿闭J為“存在無窮多對相鄰且差為2的素數”。

現給定任意正整數N(<105),請計算不超過N的滿足猜想的素數對的個數。

輸入格式:

輸入在一行給出正整數N。

輸出格式:

在一行中輸出不超過N的滿足猜想的素數對的個數。

輸入樣例:

20

輸出樣例:

4

2. 題目分析

素數定義:在大于1的自然數中,除了1和它本身以外不再有其他因數的自然數。

要求素數對,首先要求出<=N的全部素數,并把它放到一個list中。

所以自然而然想到要寫出一個算法,判斷一個數是否是素數

根據上面的流程,我們將其可以翻譯成代碼。

def isPrime(n):if n == 1:return Falseend = int(math.sqrt(n))for i in range(2, end+1):if n % i == 0:return Falsereturn True

但是這樣寫算法的運行效率非常慢。

這一題,限制的總耗時是200ms。

雖然上面的代碼處理完全正確 , 但是最后一個測試點,直接運行超時,自然拿不到滿分。

所以我們要設計運算速度更快的判斷素數算法。

2,3,5,7,11,13,17,19,23

觀察上面的數字,可以看出所有>6的素數,都可以采用 6k-1 或者 6k+1 的形式表示。(k>=1)

所以就設計出了算法2

def isprime(n):if n == 2 or n == 3:return Trueif n % 2 == 0 or n % 3 == 0:return Falsefor k in range(6,int(math.sqrt(n)) + 2, 6):# range取值 [6,12,18,...]if n % (k-1) == 0 or n % (k+1) == 0:return Falsereturn True

3. AC代碼

import mathdef isPrime(n): # if n == 1: # return False # end = int(math.sqrt(n)) # for i in range(2, end+1): # if n % i == 0: # return False # return Trueif n == 2 or n == 3:return Trueif n % 2 == 0 or n % 3 == 0:return Falsefor k in range(6,int(math.sqrt(n)) + 2, 6):if n % (k-1) == 0 or n % (k+1) == 0:return Falsereturn Truen = int(input()) l = [i for i in range(2, n+1) if isPrime(i)]count = 0for index, element in enumerate(l):if index < len(l)-1:if l[index+1]-l[index] == 2:count += 1print(count) 與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的【Python】PAT-1007-素数对猜想的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。