Python Primzahlen erraten umschreiben?

3 Antworten

Es gibt übrigens eine Quelltext-Formatierungsfunktion - mit diesem Zeichen: </>

def teiler(N):
  liste=[]
  i = 2
  rest = 0
  while i < N:
    rest = N%i
    if rest == 0:
      liste.append(i)
      i=i+1
    else:
      i=i+1
  return(liste)

So, nun zum Inhalt:

  • Warum eine Liste? Dir reicht doch im Prinzip ein Rückgabewert - Wahr oder falsch
  • Du brauchst nur bei Wurzel(N) prüfen, wenn die Zahl keine Primzahl ist, muss sie mindestens einen kleineren Teiler haben.
  • mit early-return wird es effizienter
  • Zuweisung rest=0 brauchst du nicht machen, wenn der Wert sowieso überschrieben wird.
  • Wenn eine Operation im if und im else-Zweig ausgeführt wird, kannst du sie auch raus ziehen, sodass sie immer ausgeführt wird
  • ich gebe keine Garantie auf korrekte Syntax:
def teiler(N):
  i = 2
  while i < Math.sqrt(N):
    rest = N%i
    if rest == 0:
      return false
    i=i+1
  return true

Diese lösen Ihr Problem?

import math

primes = []

def isPrime(number):
    if number<=1:
        return False
    if number==2:
        return True
    if number%2==0:
        return False
    for i in range(3,int(math.sqrt(number))+1):
        if number%i==0:
            return False
    return True

for i in range (1, 9999999):
    if isPrime(i) == True:
        primes.append(i)

print(primes)

--

num = int(input("Geben Sie eine Zahl ein: "))  
  
if num > 1:  
   for i in range(2,num):  
       if (num % i) == 0:  
           print(num, "ist keine Primzahl")
           print(i,"x",num//i,"ist",num)  
           break  
   else:  
       print(num,"ist eine Primzahl")  
         
else:  
   print(num,"ist keine Primzahl")  

public static void main(String[] args) {

Scanner s=new Scanner(System.in);

boolean is_primzahl=true;

int zahl,grenze,i=1,ergebnis=2;

    System.out.println("Bitte geben sie die Zahl ein die sie überprüfen möchten");

    zahl=s.nextInt();

    while(ergebnis>i)

    {

    ergebnis=zahl/i;

    i++;

    }

    i=2;

    grenze=ergebnis;

    for(i=3;i<=grenze;i=i+2)

    {

    if(zahl%i==0)

    {

    is_primzahl=false;

    break;

    }

    

    }

    if(is_primzahl==true)

    {

    System.out.println("Ihre Zahl ist eine Primzahl");

    }

    else {

    ergebnis=zahl/i;

    System.out.println("Ihre Zahl ist keine Primzahl, denn "+zahl+" / "+i+" ergibt "+ergebnis);

    }

}

Ist zwar Java aber vielleicht hilft es dir ja