質數相關問題的python實現

2021-10-25 02:30:49 字數 2929 閱讀 8726

title: 質數相關問題的python實現

date: 2020-04-12 18:26:26

categories: 演算法

tags: [python, 質數]

給定乙個正整數n,請你求出1~n中質數的個數。

輸入格式

共一行,包含整數n。

輸出格式

共一行,包含乙個整數,表示1~n中質數的個數。

資料範圍

1≤n≤1061≤n≤106

輸入樣例:

8
輸出樣例:
4
**
ias=

lambda

:map

(str

,input()

.split())

ia=lambda

:map

(int

,input()

.split())

n=int

(input()

)prime=

st=[

false

for i in

range(0

,n+1)]

st[0]=

true

st[1]=

true

# 樸素篩法-o(nlogn)

defget_prime

(n):

for i in

range(2

,n+1):

if st[i]

==false

:for j in

range

(i+i,n+

1,i)

:#不管是合數還是質數,都用來篩掉後面它的倍數

st[j]

=true

#誒氏篩法 o(nloglogn)

defget_prime

(n):

for i in

range(2

,n+1):

if st[i]

==false

:for j in

range

(i+i,n+

1,i)

:#可以用質數就把所有的合數都篩掉

st[j]

=true

#線性篩法-o(n), n = 1e7的時候基本就比埃式篩法快一倍

#演算法核心:x僅會被其最小質因子篩去

defget_prime

(n):

for i in

range(2

,n+1):

if st[i]

==false

:for it in prime:

#對於任意乙個合數x,假設pj為x最小質因子,當iif it*i>n:

break

st[it*i]

=true

if i%it==0:

break

#1.i%pj == 0, pj定為i最小質因子,pj也定為pj*i最小質因子

#2.i%pj != 0, pj定小於 i的所有質因子,所以pj也為pj*i最小質因子

get_prime(n)

print

(len

(prime)

)

jm在學習了素數之後,決定挑33個素數構成和為nn,並將這樣一組的三個數稱之為友好搭檔

現在,jm同學想知道,它能夠找出多少組不同的友好搭檔

例如:(2,2,5)(2,2,5)就是一組和為99的友好搭檔

**注意:**同組元素沒有先後次序關係,(2,2,5)和(2,5,2)(2,2,5)和(2,5,2)是同一組友好搭檔

輸入一行,乙個正整數nn。

輸出和為nn不同友好搭檔的數量

輸入複製

9
輸出複製
2
樣例解釋

(2,2,5),(3,3,3

資料規模

對於50%50%的資料,1 \le n \le 1001≤n≤100

對於80%80%的資料,1 \le n \le 20001≤n≤2000

對於100%100%的資料,1 \le n \le 800001≤n≤80000

n=

int(

input()

)n=n

prime=

st=[

false

for i in

range(0

,n+1)]

st[1]=

true

st[0]=

true

defget_prime

(n):

for i in

range(2

,n+1):

if st[i]

==false

:for it in prime:

if it*i>n:

break

st[it*i]

=true

if i%it==0:

break

get_prime(n)

ans=

0cnt=

len(prime)

for i in

range(0

,cnt)

:for j in

range

(i,cnt)

: k=n-prime[i]

-prime[j]

#print(k)

if k:break

if st[k]

==false

: ans+=

1print

(ans)

質數相關的問題

判斷乙個數是否為質數 找乙個區間範圍的所有質數 找出乙個數的質數因子 a.判斷乙個數是否為質數 function isprime num return flag var f isprime 180 console.log f falseb.找出100以內的所有質數 var range 100 var...

質數相關問題

題目描述 給定n個正整數ai,判定每個數是否是質數。輸入格式 第一行包含整數n。接下來n行,每行包含乙個正整數ai。輸出格式 共n行,其中第 i 行輸出第 i 個正整數ai是否為質數,是則輸出 yes 否則輸出 no 資料範圍 1 n 100,1 ai 2 109 輸入樣例 2 26輸出樣例 yes...

Python實現 求質數演算法

質數也就是大於1的整數中,除了1和它本身以外不能被其他整數整除的數,也叫素數。問題 現給定乙個任意整型引數 n n 1 求出小於n 的質數的個數。這裡主要介紹五種演算法,前三種思路一致,主要是效率的差異 第五種採用了埃拉託斯特尼篩法進行計算。例如 輸入 10,輸出 4 2,3,5,7 輸入 20,輸...