2017-06-22 3 views
0

Ich bin ein Anfänger bei Python, immer noch ein bisschen verwirrt darüber. Ich habe die Primzahlen ausgedruckt, aber jetzt stehe ich fest und versuche, die Anzahl der ausgegebenen Primzahlen zu erhalten. Bitte helfen Sie mir.Suche Primzahl und die Zählung der Primzahl - Python

import math 

n= int (input("Enter an Integer: ")) 

for j in range(2, n+1): 
    if all(j%i!=0 for i in range(2,int(math.sqrt(j))+1)): 
     print (j) 



    count = 0 
    for j in range(2, n+1): 
     if j is True: 
      len(j) 
      print(str(len(j))) 
+3

Fügen Sie einen Zähler vor der ersten for-Schleife hinzu und setzen Sie ihn auf Null, dann nach jedem Ausdruck (j) 'erhöhen Sie den Zähler. Dann können Sie den gesamten nachfolgenden Code entfernen. – alfasin

+0

Ich bin mir nicht sicher, was dein Problem ist? Zählen Sie einfach die Anzahl, wenn Sie eine Primzahl finden. Aber Sie müssen 'count' außerhalb der ersten for-Schleife bewegen, wie es bei @alfasin der Fall ist. –

+0

Es sieht so aus, als ob in Ihrem Code der letzte Block, beginnend mit 'count = 0', nicht notwendig ist. Was Sie tun können, ist die Zuweisung von 'count' vor die for-Schleife zu verschieben und die Anzahl jedes Mal zu erhöhen, wenn die if-Anweisung innerhalb der for-Schleife wahr ist. Die zweite for-Schleife ist nicht notwendig. – victor

Antwort

0

Alles, was Sie tun müssen, ist einen Zähler in Ihrem Code hinzuzufügen. Bitte gehen Sie durch den Code unten, um zu sehen, wie das gemacht werden kann.

import math 

n= int (input("Enter an Integer: ")) 
count = 0 
for j in range(2, n+1): 
    if all(j%i!=0 for i in range(2,int(math.sqrt(j))+1)): 
     print (j) 
     count = count + 1 

print "Number of prime numbers between 1 and " + str(n) + " is " + str(count) 
1

Ich gehe davon aus, dass Ihr Ziel, alle Primzahlen zwischen 0 und n (Genommen als Eingabe durch den Benutzer) und sie zählen zu drucken ist. Alles, was Sie tun müssen, ist, die Zählung vor der ersten Schleife zu deklarieren und sie jedes Mal zu erhöhen, wenn eine Primzahl gefunden wird. Der Code wird wie folgt aussehen:

import math 

n= int (input("Enter an Integer: ")) 
count = 0 
for j in range(2, n+1): 
    if all(j%i!=0 for i in range(2,int(math.sqrt(j))+1)): 
     print (j) 
     count = count + 1 
print (" Number of prime numbers is : " , count) 

Was im Code falsch ist, ist, dass in der zweiten Schleife for j in range(2, n+1):, j eine ganze Zahl ist und if j is True: ist immer falsch, wie j kein ‚boolean‘ Wert ist. Daher wird print(str(len(j))) niemals ausgeführt.