मान लीजिए कि हमारे पास एक दिया गया पूर्णांक N है; हमें एन से कम सभी ट्रंकटेबल प्राइम का योग खोजना होगा। जैसा कि हम जानते हैं कि ट्रंकटेबल प्राइम एक संख्या है जो बाएं-छंटनी योग्य प्राइम है (यदि अग्रणी "बाएं" अंक क्रमिक रूप से हटा दिया जाता है, तो सभी परिणामी संख्याओं को प्राइम के रूप में माना जाता है) साथ ही दाएं-छंटनी योग्य अभाज्य (यदि अंतिम "दाएं" अंक को क्रमिक रूप से हटा दिया जाता है, तो सभी परिणामी संख्याओं को अभाज्य माना जाता है)। ट्रंकटेबल प्राइम का एक उदाहरण 9137 है क्योंकि यह लेफ्टट्रंकटेबल प्राइम है क्योंकि 9137, 137, 37 और 7 प्राइम हैं। अत:9137 एक छोटा अभाज्य अभाज्य है।
तो, अगर इनपुट एन =55 की तरह है, तो आउटपुट 130 होगा (2 + 3 + 5 + 7 + 23 + 37 + 53) =
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एन:=1000005
-
प्राइम:=आकार N की एक सूची और ट्रू से भरें
-
एक फ़ंक्शन चलनी () को परिभाषित करें। इसमें लगेगा
-
प्राइम [1]:=झूठा, अभाज्य [0]:=झूठा
-
मेरे लिए 2 से N की सीमा में, करें
-
अगर प्राइम [i] ट्रू के समान है, तो
-
j रेंज में i * 2 से N के लिए, प्रत्येक चरण में i, do द्वारा अपडेट करें
-
प्राइम [जे]:=झूठा
-
-
-
-
मुख्य विधि से, निम्न कार्य करें -
-
योग :=0
-
मेरे लिए 2 से n की सीमा में, करें
-
वर्तमान:=मैं
-
एफ:=सच
-
-
जबकि करंट गैर-शून्य है, करें
-
अगर प्राइम [करंट] गलत है, तो
-
च :=असत्य
-
लूप से बाहर आएं
-
-
वर्तमान:=वर्तमान / 10
-
-
वर्तमान:=मैं
-
शक्ति :=10
-
जबकि (वर्तमान / शक्ति) का भागफल शून्य नहीं है, करें
-
अगर प्राइम [वर्तमान मॉड पावर] गलत है, तो
-
च :=असत्य
-
लूप से बाहर आएं
-
-
शक्ति :=शक्ति * 10
-
-
अगर f सच है, तो
-
योग :=योग + मैं
-
-
वापसी राशि
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
N = 1000005 prime = [True for i in range(N)] def sieve(): prime[1] = False prime[0] = False for i in range(2, N): if (prime[i]==True): for j in range(i * 2, N, i): prime[j] = False def get_total_of_trunc_primes(n): sum = 0 for i in range(2, n): current = i f = True while (current): if (prime[current] == False): f = False break current //= 10 current = i power = 10 while (current // power): if (prime[current % power] == False): f = False break power *= 10 if f: sum += i return sum n = 55 sieve() print(get_total_of_trunc_primes(n))
इनपुट
55
आउटपुट
130