c) 使用 (b) 部分中的函式,實作函式 primesCount(n),它給定一個整數 n,回傳長度為 n 的串列 y,由 y[i] = 小于或等于的素數的數量給出i, 因為 i = 0, 1, . . . , n ? 1. 樣本輸入/輸出:輸入一個數字:6 [0, 0, 1, 2, 2, 3]
(b) 部分功能:
def generatePrimes(n):
prime = [False for i in range(n)]
I = []
for i in range(2, n):
if i > 1:
for j in range(2, int(math.sqrt(i)) 1):
if i % j == 0:
break
else:
I.append(i)
prime[i] = True
return prime
所有代碼(b 部分 c 部分功能):
import math
def generatePrimes(n):
prime = [False for i in range(n)] # creates a list of n-length all consisting of F elem
I = []
for i in range(2, n):
if i > 1:
for j in range(2, int(math.sqrt(i)) 1):
if i % j == 0:
break
else:
I.append(i) # unecessary
prime[i] = True #change False to True if number is prime
return prime # return the list (indexes with False are composite numbers while indexes
with True are prime number
def primesCount(n):
I = []
for i in range(n):
I.append(generatePrimes(i))
return I
n = int(input("Enter a number: "))
print(primesCount(n))
預期輸入/輸出:
input: Enter a number: 6
output: [0, 0, 1, 2, 2, 3]
實際輸入/輸出:
input: Enter a number: 6
output: [[], [False], [False, False], [False, False, True],[False, False, True, True]]
我需要的是將 False 和 True 轉換為整數,例如 False False False True True = 0 0 1 1 = 2
我想將上面的輸出轉換為 [0, 0, 1, 2, 2, 3] ( [False] = 0, [False False] = 0, [False, False, True] = 1...)
幾個小時以來一直在撓頭,似乎無法讓它發揮作用
uj5u.com熱心網友回復:
我已經更新了你的代碼。請調查一下
import math
def generatePrimes(n):
prime = [False for i in range(n)] # creates a list of n-length all consisting of F elem
I = []
for i in range(2, n):
if i > 1:
for j in range(2, int(math.sqrt(i)) 1):
if i % j == 0:
break
else:
I.append(i) # unecessary
prime[i] = True #change False to True if number is prime
return prime # return the list (indexes with False are composite numbers while indexes
#with True are prime number
def primesCount(n):
I = []
for i in range(n 1):
if len(generatePrimes(i)):
I.append(sum(generatePrimes(i)))
return I
n = int(input("Enter a number: "))
print(primesCount(n))
uj5u.com熱心網友回復:
def generatePrimes(n):
prime = [False for i in range(n)] # creates a list of n-length all consisting of F elem
I = []
for i in range(2, n):
if i > 1:
for j in range(2, int(math.sqrt(i)) 1):
if i % j == 0:
break
else:
I.append(i) # unecessary
prime[i] = True #change False to True if number is prime
final_output = []
counter = 0
for value in prime:
if prime:
counter = 1
final_output.append(counter)
return final_output
只需回圈遍歷每個值并在該值為真時迭代一個計數器。把它放在你回傳素數之前。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/363895.html
下一篇:在階躍函式圖中添加水平線
