0
我試圖嘗試項目歐勒(click here)的第35個問題。問題如下所示:項目歐拉#35 - 通函(不正確的結果1)
數字197被稱爲圓形素數,因爲數字的所有旋轉:197,971和719本身都是素數。
在100以下有13個這樣的素數:2,3,5,7,11,13,17,31,37,71,73,79和97.
在100萬以下有多少個圓形素數?
因此,我創建了一個第一百萬個數的篩子,以獲得一百萬以下的所有素數,並用它來比較素數的旋轉結果。
arr = []
for i in range(2, len(sieve)):
if sieve[i]:
sub_arr = retCircular(i)
count = len(sub_arr)
carry = 0
for j in sub_arr:
if sieve[j]:
carry += 1
sieve[j] = False
else:
break
if carry == count:
for j in sub_arr:
arr.append(j)
print "Number of circular primes =", len(arr)
這個節目給了圓形的素數的數量在1萬至54被,而實際的答案是55,可能有人幫助我,我哪裏錯了?
注:
- retCircular(n)是一個用戶定義的功能,它返回號碼的所有圓形形式的陣列。
- 'sieve'是一個布爾值數組,其中包含所有主要位置索引處的True和所有合成位置索引處的False。
P/S,如果有人有更好的方法來解決問題,請讓我知道!
歡迎StackOverflow上。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在您發佈代碼並準確描述問題之前,我們無法有效幫助您。特別是,我們需要代碼來重現問題。我們也可以使用你的邏輯和數據 - 你缺少什麼素數? – Prune
在循環之前添加它:'print sieve [2]'。如果答案是「3」,則跳過第一個素數。 –
考慮如果您的初始素數(在測試循環性之前)包含數字0,2,4,5,6,8中的任何一個將會發生什麼。小心使用單數字素數2和5。 – rossum