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,輸...