本文目錄一覽:
- 1、python輸出200以內的最大素數
- 2、Python 素數
- 3、python語言 超級素數
- 4、如何用python計算小於100的最大素數
- 5、python中如何判斷素數
- 6、python 找最大質數問題
python輸出200以內的最大素數
# 輸出200以內的最大素數
for n in range(199,100,-2):
for i in range(3,int(n**(1/2))+1,2):
if n % i == 0:
break
else:
print(f’200以內最大素數是{n}’)
break
程序縮進如圖所示
Python 素數
i = 2
while i = 100:
j = 2
while j = i / j: #難點1
if i % j == 0:
break #如果提前提出,j的值= i / j
j = j + 1
if j i / j: #難點2
print(i, end=’ ‘)
i = i + 1
其實代碼每一句都很簡單,就不一一注釋了,其實難的是思路。主要是兩個地方對J變量的判斷
A:while循環,一種常見的是j=sqrt(i),用這個數的開方(根號)來指定搜索上限,這是因為:
一個數若可以進行因數分解,那麼分解時得到的兩個數一定是一個小於等於sqrt(n),一個大於等於sqrt(n)——所以只要搜索到根號的地方就可以了,提高了速度。
用i/j的方式是sqrt的一種變種,j=sqrt(i),由於ij1,兩邊平方後不等式仍然成立
j^2=i 兩邊除以j就變成了j = i / j
B:第二處,根據j的數值來判斷i是否是素數。當在循環中找到i % j == 0的情況,循環會提前退出,導致j i / j——說明不是素數;如果循環沒有提前退出,說明i是素數,這時j的值 i / j
python語言 超級素數
# -*-coding:utf8-*-
#py3
import math
def Prime(n): #判斷n是不是素數
if n==1:
return False
if n==2:
return True
t=int(math.sqrt(n)+1)
for i in range(2,t):
if n%i==0:
return False
return True
if __name__==’__main__’:
s=0 #素數和
k=0 #個數
for i in range(100,10000):
t=i
while t1 and Prime(t):#t若是素數且大於1
t=int(t/10) #繼續去掉低一位.直至t=0或t不是素數
if t==0: #該數是所求
print(i)#測試使用,僅供觀察,可以去掉
s+=i #求和
k+=1 #計數器加1
print(s,k) #輸出結果
結果:
如何用python計算小於100的最大素數
# -*- coding:utf-8 -*-
import math as ma #引入math,要用到開平方函數sqrt()
def prime(n): #判斷整數n是不是素數
if n==1:
return 0
t=int(ma.sqrt(n)+1)
for i in range(2,t):
if n%i ==0:
return 0
return 1
for i in range(1,101):
if(prime(i)):
print(i,end=’ ‘)#輸出不換行
python中如何判斷素數
素數的定義:所有比1大的整數中,只能被1或者它本身整除的數為素數
根據定義寫出代碼:
代碼
python 找最大質數問題
“”” 題主的問題主要有三個:
1. max_prime中的i錯寫成了x,這是導致錯誤的原因
2. s=[]應放在函數max_prime中,這樣才符合程序設計原則
3. 如果要求的是包含x在內的最大質數,max_prime函數中range應
寫成range(2,x+1),此時i的取值範圍才是2到x
此外,尋找最大質數時max_prime中遍歷時應該從後往前遍歷,此時遇到
的第一個質數就是所求最大質數,而不必從前遍歷做無用功。
修改代碼如下:
“””
def prime(x):
for i in range(2,x//2+1):
if x%i==0:
return False
return True
def max_prime(x):
for i in range(x,1,-1): # x+1以包含x本身
if prime(i):
return i
print(max_prime(1000))
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/196522.html