證明乙個數是不是素數
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 之間的每乙個整數...