python語言中關於素數的問題

2021-07-31 05:55:47 字數 1950 閱讀 3605

質數(prime number)又稱素數,有無限個。質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數的數稱為質數

基本判斷思路:

在一般領域,對正整數n,如果用2到 之間的所有整數去除,均無法整除,則n為質數。

質數大於等於2 不能被它本身和1以外的數整除

方法1

#求100一下的素數

import datetime

start=datetime.datetime.now()#記錄開始時間

sum=0

for i in range(2,101):

for j in range(2,i):

if i%j==0:

sum+=1

if (sum==0):

print(i)

sum=0

end=datetime.datetime.now()#結束時間

print(end-start)

#方法2

import datetime

start = datetime.datetime.now()#記錄開始時間

# do something

sum=0

for i in range(2,101):

for j in range(2,i):

if i%j==0:

sum=1

break

#採用了break的作用使得**時間短

if (sum==0):

print(i,end=' ')

sum=0

end = datetime.datetime.now()#記錄結束時間

print (end-start)

#方法三

#利用函式

from math import sqrt

defis_prime

(n):

if n == 1:

return

false

for i in range(2, int(sqrt(n))+1):

if n % i == 0:

return

false

return

true

有關問題:

#2百萬一下的素數之和

from math import sqrt

defis_prime

(n):

if n == 1:

return

false

for i in range(2, int(sqrt(n))+1):

if n % i == 0:

return

false

return

true

sum1=0

for i in range(1,2000001):

if(is_prime(i)):

sum1+=i

print(sum1)

關於求乙個正整數的質因數:

#求乙個整數的質因數

deffactor

(n):

m=na=

i=1#從1開始

while(i1):

if(m%i==0):

m//=i

i=2#從2迴圈開始

else:

i+=1

return a

print(factor(600851475143))

'''#方法二,遞迴方法

def factor(n):

m=nglobal a

for i in range(2,m+1):

if(m%i==0):

return factor(m//i)

a=factor(5)

print(a)

在學習中最大的收穫,不僅僅是學到了程式設計的思想,還是有數學的知識。

關於sql語言中的WHERE IN

我現在有乙個int型的陣列 int i new int x x為未知數 我要通過sql語句的where in i陣列裡的所有數 可以通過先將i陣列的數寫到乙個字串中 string str for int i 0 i str str id x tostring trim 然後可以寫到查詢語句中了 st...

關於C語言中的巨集

define pi 3.14 define zhouchang r 2 pi r 定義帶引數的巨集 undef pi 結束巨集 使用 ifdef ifndef else endif執行條件編譯 ifdefine 巨集名稱 語句 else 語句 endif define age 39 int main...

關於C語言中的指標

1 對於已定義的某個變數的讀取 通過該變數來訪問它的值 通過該變數的儲存位置讀取數值 指標 作業系統會將所有的記憶體單元進行編號。關於32位作業系統與64位作業系統支援的最大記憶體。計算機底層使用二進位制進行管理,所以32位作業系統支援2的32次方個編號,即4g的記憶體位址。int a 1 int ...