दिलचस्प पोस्ट
मोंगो जटिल छँटाई? स्ट्रिंग के अंतिम भाग को बदलें MVC4 DataType.Date EditorFor क्रोम में तिथि मान प्रदर्शित नहीं करेगा, ठीक इंटरनेट एक्सप्लोरर में मैं आईफोन के वर्तमान आईपी पते की जांच कैसे करूं? स्ट्रिंग को इंटरफ़ेस में परिवर्तित नहीं किया जा सकता {} पायथन का (__ कंटेंट्स_) ऑपरेटर एक बूल देता है जिसका मूल्य न तो सच्चा और न ही गलत है JSON ऑब्जेक्ट की धारा को पार्स करने के लिए JSON.NET का उपयोग करने का सही तरीका क्या है? क्या हम इंट-फ्लोट जैसी अंतर्निहित प्रकारों के लिए ऑपरेटर अधिभार कर सकते हैं? बनाओ सीएसएस हॉवर राज्य "रहो" के बाद रहना मैं पायथन में कच्चे इनपुट की कई पंक्ति कैसे पढ़ूं? यह पता लगाया जा रहा है कि ब्राउज़र के पास कोई माउस नहीं है और केवल स्पर्श है क्यों LinkedHashSet <ई> HashSet <e> बढ़ाएं और सेट <ई> को लागू करें NVARCHAR (अधिकतम) के लिए अधिकतम वर्ण क्या हैं? रनटाइम के दौरान ओरिएंटेशन लॉक कैसे करें मैं कैसे एक कस्टम "पिन ड्रॉप" एनीमेशन MKAnnotationView का उपयोग कर सकते हैं?

पायथन प्राइम नंबर चेकर

मैं एक प्रोग्राम लिखने की कोशिश कर रहा हूं जो एक इनपुट नंबर लेगा, और जांच कर देखें कि यह एक प्रमुख संख्या है। जो कोड मैंने अभी तक बना दिया है वह पूरी तरह से काम करता है यदि संख्या वास्तव में एक प्रमुख संख्या है यदि संख्या एक प्रमुख संख्या नहीं है, तो यह अजीब काम करता है मैं सोच रहा था कि कोई मुझे बता सकता है कि समस्या कोड के साथ क्या है

a=2 num=13 while num > a : if num%a==0 & a!=num: print('not prime') a=a+1 else: print('prime') a=(num)+1 

परिणाम दिया गया है जब 24 इनपुट किया गया है: प्रधानमंत्री प्रधानमंत्री नहीं प्रधानमंत्री प्रधानमंत्री

मैं हर अजीब और हर व्यक्ति के लिए प्रधानमंत्री की रिपोर्टिंग प्रमुख के साथ त्रुटि कैसे तय करूँगा?

Solutions Collecting From Web of "पायथन प्राइम नंबर चेकर"

एक बार जब आप जानते हैं कि कोई संख्या प्रधान नहीं है, तो आपको दोबारा चलना बंद करना होगा। जब आप लूप से बाहर निकलने के लिए प्रधानमंत्री पाते हैं तो एक break जोड़ें।

इसे काम करने के लिए अपने कोड में केवल न्यूनतम परिवर्तन करना:

 a=2 num=13 while num > a : if num%a==0 & a!=num: print('not prime') break i += 1 else: # loop not exited via break print('prime') 

आपका एल्गोरिथ्म निम्न के बराबर है:

 for a in range(a, num): if a % num == 0: print('not prime') break else: # loop not exited via break print('prime') 

यदि आप इसे एक समारोह में डालते हैं तो आप break साथ बांट सकते हैं और अन्यथा:

 def is_prime(n): for i in range(3, n): if n % i == 0: return False return True 

यहां तक ​​कि अगर आप इस तरह से प्राण के लिए जबरदस्त बल में जा रहे हैं, तो आपको केवल n वर्गमूल को पुनरावृत्त करने की जरूरत है। इसके अलावा, आप दो के बाद भी संख्याओं का परीक्षण छोड़ सकते हैं।

इन सुझावों के साथ:

 import math def is_prime(n): if n % 2 == 0 and n > 2: return False for i in range(3, int(math.sqrt(n)) + 1, 2): if n % i == 0: return False return True 

ध्यान दें कि यह कोड ठीक से 0 , 1 , और ऋणात्मक संभाल नहीं करता है।

हम लूप को प्रतिस्थापित करने के लिए जनरेटर अभिव्यक्ति के साथ all का उपयोग करके यह सरल बनाते हैं।

 import math def is_prime(n): if n % 2 == 0 and n > 2: return False return all(n % i for i in range(3, int(math.sqrt(n)) + 1, 2)) 
 def isprime(n): '''check if integer n is a prime''' # make sure n is a positive integer n = abs(int(n)) # 0 and 1 are not primes if n < 2: return False # 2 is the only even prime number if n == 2: return True # all other even numbers are not primes if not n & 1: return False # range starts with 3 and only needs to go up # the square root of n for all odd numbers for x in range(3, int(n**0.5) + 1, 2): if n % x == 0: return False return True 

से लिया गया:

http://www.daniweb.com/software-development/python/code/216880/check-if-a-number-is-a-prime-number-python

आपके कोड के साथ दो मुख्य समस्याएं हैं:

  1. किसी संख्या को प्राथमिकता न रखने के बाद, आप बाकी हिस्सों की जांच करना जारी रखेंगे, भले ही आप पहले से ही जानते हों कि यह प्राइम नहीं है, जो "प्राइम नहीं" छपाई के बाद "प्राइम" को प्रिंट कर सकता है। संकेत: `ब्रेक 'कथन का उपयोग करें
  2. इससे पहले कि आप सभी विभाजक को जांचने की ज़रूरत हो, इससे पहले कि आप एक नंबर प्रधान नामित करें, क्योंकि आप लूप के अंदर "प्राइम" छपाई कर रहे हैं। तो आपको कई बार "प्राइम" मिलता है, प्रत्येक विभाजक के लिए एक बार, जो परीक्षण की जा रही संख्या में समान रूप से नहीं जाता है संकेत: लूप से "प्राइम" को प्रिंट करने के लिए किसी else खंड का उपयोग करें, अगर लूप बिना किसी ब्रेकिंग के बाहर निकल जाए।

एक दंपति काफी महत्वपूर्ण अक्षमताओं:

  1. आपको उन नंबरों का ट्रैक रखना चाहिए जिन्हें आपने पहले ही पाया है कि वे प्रधान हैं और केवल उन लोगों द्वारा विभाजित करते हैं। 4 से विभाजित क्यों है जब आप पहले से 2 से विभाजित हैं? यदि कोई संख्या 4 से विभाज्य है, तो यह 2 से विभाज्य भी है, इसलिए आप पहले से ही इसे पकड़े होंगे और 4 से विभाजित करने की कोई आवश्यकता नहीं है।
  2. आपको केवल परीक्षण की जा रही संख्या के वर्गमूल तक परीक्षण करने की आवश्यकता है क्योंकि उस से बड़े किसी भी कारक को उस की तुलना में किसी संख्या के साथ गुणा किया जाना आवश्यक है, और जब तक आप बड़ी संख्या में प्राप्त करते हैं, तब तक इसका परीक्षण पहले ही किया जाएगा।
 def is_prime(n): return all(n%j for j in xrange(2, int(n**0.5)+1)) and n>1 

आपकी समस्या यह है कि लूप चलने के लिए जारी है, यहां तक ​​कि यह भी सोचा था कि आपने "अपना मन बनाया" पहले से ही किया है आपको a=a+1 बाद लाइन break जोड़ना चाहिए

इस उदाहरण का उपयोग कम करें (), लेकिन इसे धीमा करें:

 def makepnl(pnl, n): for p in pnl: if n % p == 0: return pnl pnl.append(n) return pnl def isprime(n): return True if n == reduce(makepnl, range(3, n + 1, 2), [2])[-1] else False for i in range(20): print i, isprime(i) 

इससे ऊपर की तुलना में तेजी से चाकू का प्रयोग होता है:

 def atkin(limit): if limit > 2: yield 2 if limit > 3: yield 3 import math is_prime = [False] * (limit + 1) for x in range(1,int(math.sqrt(limit))+1): for y in range(1,int(math.sqrt(limit))+1): n = 4*x**2 + y**2 if n<=limit and (n%12==1 or n%12==5): # print "1st if" is_prime[n] = not is_prime[n] n = 3*x**2+y**2 if n<= limit and n%12==7: # print "Second if" is_prime[n] = not is_prime[n] n = 3*x**2 - y**2 if x>y and n<=limit and n%12==11: # print "third if" is_prime[n] = not is_prime[n] for n in range(5,int(math.sqrt(limit))): if is_prime[n]: for k in range(n**2,limit+1,n**2): is_prime[k] = False for n in range(5,limit): if is_prime[n]: yield n def isprime(n): r = list(atkin(n+1)) if not r: return False return True if n == r[-1] else False for i in range(20): print i, isprime(i) 

यहां बीगिनर, तो कृपया मुझे बताएं कि मैं किस तरह का हूँ, लेकिन मैं इसे इस तरह करूँगा:

 def prime(n): count = 0 for i in range(1, (n+1)): if n % i == 0: count += 1 if count > 2: print "Not a prime" else: print "A prime" 

आपके द्वारा यह निर्धारित करने के बाद कि कोई संख्या समग्र (प्रधानमंत्री नहीं) है, आपका काम किया जाता है आप break साथ लूप से बाहर निकल सकते हैं

 while num > a : if num%a==0 & a!=num: print('not prime') break # not going to update a, going to quit instead else: print('prime') a=(num)+1 

इसके अलावा, आप कोशिश कर सकते हैं और पायथन में कुछ निर्माण के साथ अधिक परिचित हो सकते हैं। आपका लूप एक लाइनर को कम किया जा सकता है जो अभी भी मेरी राय में अच्छी तरह से पढ़ता है

 any(num % a == 0 for a in range(2, num)) 

यह मामूली भिन्नता है क्योंकि यह कारकों का ट्रैक रखता है।

 def prime(a): list=[] x=2 b=True while x<a: if a%x==0: b=False list.append(x) x+=1 if b==False: print "Not Prime" print list else: print "Prime" 

प्रधान संख्या की जांच

 def is_prime(x): if x < 2: return False else: if x == 2: return True else: for i in range(2, x): if x % i == 0: return False return True x = int(raw_input("enter a prime number")) print is_prime(x) 

यह काम करेगा:

 number=int(raw_input("Enter a number to see if its prime:")) if number <= 1: print "number is not prime" else: a=2 check = True while a != number: if number%a == 0: print "Number is not prime" check = False break a+=1 if check == True: print "Number is prime" 
 a=input("Enter number:") def isprime(): total=0 factors=(1,a)# The only factors of a number pfactors=range(1,a+1) #considering all possible factors if a==1 or a==0:# One and Zero are not prime numbers print "%d is NOT prime"%a elif a==2: # Two is the only even prime number print "%d is prime"%a elif a%2==0:#Any even number is not prime except two print "%d is NOT prime"%a else:#a number is prime if its multiples are 1 and itself #The sum of the number that return zero moduli should be equal to the "only" factors for number in pfactors: if (a%number)==0: total+=number if total!=sum(factors): print "%d is NOT prime"%a else: print "%d is prime"%a isprime() 
 max=int(input("Find primes upto what numbers?")) primeList=[] for x in range(2,max+1): isPrime=True for y in range(2,int(x**0.5)+1) : if x%y==0: isPrime=False break if isPrime: primeList.append(x) print(primeList) 

 # is digit prime? we will see (Coder: Chikak) 

# is digit prime? we will see (Coder: Chikak)

def is_prime (x):
ध्वज = गलत
यदि x <2:
विवरण झूठा है
अन्य:
श्रेणी में गिनती के लिए (2, एक्स):
यदि x% गिनती == 0:
झंडा = सच
टूटना
यदि ध्वज == सच है:
विवरण झूठा है
वापसी सच है