簡體   English   中英

Python:找到X的最大素數

[英]Python: find the largest prime number of X

嘿,很棒的python人,

警告:我是編碼新手。 好吧,現在您已經被警告了...

我正在嘗試編寫一個python文件,該文件查找我在代碼內聲明的變量的最大素數。

這是我的思考過程:

Step 1:Find Factors of X
Step 2:Put factors of X in an array a
Step 3:Analyze last element of array a
Step 4:Check if last element of array a is Prime
Step 5: if last element of array a is prime print "found the largest prime" along with the number itself, else, analyze second to last element in array a, and so on until at a[1]
Step 6: if no prime numbers in array, print "no primes found"

問題在最后一個else語句中的某個地方,當處理x = 28及其數組中的因子時:[1、2、4、7、14]我的代碼認為7不是素數...

我的步驟已在線列出:

#find factors, put them in an array a

#1.Find factors of X
#2.Put factors of X in an array a

x=28
i=1
a=[]
length = 0

while i<x:      
    if x%i == 0:    #checks to see if X is divisible by anything between 1 and X-1
        a.append(i)  #adds factor to array a
    i = i+1         

print "your factors are: ", "\n", a
print "\n"


#3. Analyze the last element in array a
# Before loop below, a = [1, 2, 4, 7, 14] and length = 5

length = 0
length = len(a)
n=a[length-1]-1  
print "checking for primes in your array now...", "\n"

while len(a) > 2:
    if a[length-1]%n != 0:       
        n=n-1
        if n == 1:
            print "PRIME TIME"
            break
    else:
        print a[length-1], "is not a prime"  #added
        del a[-1]
        length = len(a) 
        print "length = ",length
        if length == 2:
            print "NO Primes"

幾個問題:

  • 您將如何重新分配x,ia []和n之類的變量以使代碼更具可讀性

  • 在第二個循環中,在第一次迭代之后,當分析7時,為什么代碼無法識別出它是質數?

非常感謝您的建設性反饋!!

好的,我會這樣做:

def primes(n):
    primfac = []
    d = 2
    while d*d <= n:
        while (n % d) == 0:
            primfac.append(d)  
            n /= d
        d += 1
    if n > 1:
       primfac.append(n)
    return primfac

print "Factors: ", primes(28)
print "The largest is: ", max(primes(28))

首先使用我從這里獲取primes函數。 它返回一個包含所有素數的數組。 然后,簡單地使用max-function ,它為您提供了數組中最大的元素。

輸出如下:

Factors:  [2, 2, 7]
The largest is:  7

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM