python求解素數相關問題

2021-09-27 13:51:15 字數 3030 閱讀 3166

證明乙個數是不是素數

def

pd_prime

(n):

if n ==1:

# print("1既不是質數,也不是合數")

return

false

i =2 is_flag =

true

while i * i <= n:

if n % i ==0:

is_flag =

false

i +=

1# if is_flag:

# print(n)

return is_flag

如果返回true,代表著是素數,否則不是素數

計算素數函式

π(n)代表素數的個數小於等於n

求解方法一:

def

count_prime2

(n):

for j in

range(2

, n+1)

: i =

2 is_flag =

true

while i*i <= j:

if j % i ==0:

is_flag =

false

i +=

1if is_flag:

print

(j, end=

" ")

求解方法二:

def

count_prime1

(n):

is_prime =

[true]*

(n +1)

print

(is_prime)

i =2while i * i <= n:

if is_prime[i]

: j = i

while j * i <= n:

is_prime[i * j]

=false

j +=

1 i +=

1print

(is_prime)

count =

0for i in

range(2

, n +1)

:if is_prime[i]

: count +=

1print

(i, end=

" ")

return count

由此推測一下哥德**猜想:

方法一:

def

gdbh

(n):

for i in

range(2

,(n+1)

//2+1

):if pd_prime(i)

and pd_prime(n-i)

:print

("%d + %d = %d"

%(i, n-i, n)

)

方法二:

def

gdbh2

(n):

is_prime =

[true]*

(n +1)

a =i =

2while i * i <= n:

if is_prime[i]

: j = i

while j * i <= n:

is_prime[i * j]

=false

j +=

1 i +=

1for i in

range(2

, n +1)

:if is_prime[i]

: left =

0 right =

len(a)-1

while left < right:

if a[left]

+ a[right]

== n:

print

(a[left]

,"+"

, a[right]

,"="

, n)

left +=

1 right -=

1elif a[left]

+ a[right]

< n:

left +=

1else

: right -=

1

素數間隔

輸入n,輸出2-n之間的無素數的最長連續數字數列

is_prime =

[true]*

(n +1)

a =i =

2while i * i <= n:

if is_prime[i]

: j = i

while j * i <= n:

is_prime[i * j]

=false

j +=

1 i +=

1for i in

range(2

, n +1)

:if is_prime[i]

:print

(a)# 切片操作

b = a[1:

:1]print

(b) c =

for i in

range

(len

(a)-1)

:-a[i]

)print

(c) max_pos =

0for i in

range

(len

(c))

:if c[i]

> c[max_pos]

: max_pos = i

for i in

range

(a[max_pos]+1

, b[max_pos]):

print

(i)

求解素數問題演算法

在解程式題的過程中經常會遇到素數的判斷問題,在保證不能超時的同時要判斷是否為素數,大多數初學者會採用第一種演算法 1.單單列出演算法,不列出完整程式 include include intf int n if a 0 test if test n return i 這就是求第n個素數的演算法 姑且稱...

素數相關問題

判斷素數 判斷乙個數是不是素數 最常用解法 sqrt n 1 int prime intn 2 13return1 14 15 找規律優化版,更快 1 int prime intn 2 14return1 15 16 篩選素數 判斷某個範圍內所有數是不是素數,或找出所有素數。其實用判斷素數迴圈一遍也...

素數求解問題及優化

素數求解問題在程式設計師的面試中是個很簡單的問題,經常是小公司的基礎面試題。然而因為一些個小緊張什麼的,弄跪了些許人 那麼,今天就關於這個問題我們來進行總結及方案優化 素數概念 除了1和它本身不能被其他數整除的數字都是素數 思路 因此判斷乙個整數m是否是素數,只需把m被 2 m 1 之間的每乙個整數...