Funzione per trovare numeri primi

« Older   Newer »
 
  Share  
.
  1. x-reynik-x
     
    .

    User deleted


    non mi accetta quel backslash, mi dice sintax error
     
    Top
    .
  2. ~{Skydrake™}»
     
    .

    User deleted


    CITAZIONE (x-reynik-x @ 10/11/2009, 17:59)
    non mi accetta quel backslash, mi dice sintax error

    Ehm xD
    Ho messo (backslash) per indicare dove mettere il backslash...che sarebbe il carattere slash / invertito.
     
    Top
    .
  3.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Mi sembrava strano si dovesse moltiplicare :asd:
     
    Top
    .
  4. ~Andrey™
     
    .

    User deleted


    Per il Backslash basta inserirne uno prima ;)

    \\\\\\\\\\\\\\\\\\\\\\\\ :asd:
     
    Top
    .
  5. ~{Skydrake™}»
     
    .

    User deleted


    CITAZIONE (~Andrey™ @ 10/11/2009, 22:23)
    Per il Backslash basta inserirne uno prima ;)

    \\\\\\\\\\\\\\\\\\\\\\\\ :asd:

    Ah, ecco!
    Grazie ;)
    \\
     
    Top
    .
  6. x-reynik-x
     
    .

    User deleted


    Si ma non me lo accetta dice che non posso metterlo
     
    Top
    .
  7. ~{Skydrake™}»
     
    .

    User deleted


    CITAZIONE (x-reynik-x @ 11/11/2009, 14:54)
    Si ma non me lo accetta dice che non posso metterlo

    Ah, mi sa che hai ragione. In Python l'operatore di divisione intera è
    CODICE
    //
    quindi metti quello ;)
     
    Top
    .
  8. x-reynik-x
     
    .

    User deleted


    Allora viene così, ma per il 9 per esempio mi scrive 9 è primo e 9 non è primo.
    CODICE
    def prime(n):
           if n <= 3:
                   print(n, 'è primo')
           m = 2
           while m <= n//m:
                   if n % m == 0:
                           print(n, 'non è primo'),
                           break
                   m = m + 1
                   print(n, 'è primo')
     
    Top
    .
  9.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    CITAZIONE (x-reynik-x @ 11/11/2009, 16:45)
    Allora viene così, ma per il 9 per esempio mi scrive 9 è primo e 9 non è primo.
    CODICE
    def prime(n):
           if n <= 3:
                   print(n, 'è primo')
           m = 2
           while m <= n//m:
                   if n % m == 0:
                           print(n, 'non è primo'),
                           break
                   m = m + 1
                   print(n, 'è primo')

    Si perchè usi break. break esce dal ciclo e riprende dalla dichiarazione successiva (se è come in java). Devi mettere return al posto di break.
    E quel print (l'ultimo) devi metterlo fuori dal while. Oppure, lo metti in un else e metti sotto il return.
     
    Top
    .
  10. x-reynik-x
     
    .

    User deleted


    ah ok
     
    Top
    .
  11. x-reynik-x
     
    .

    User deleted


    UH ho scritto una funzione che trova tutti i numeri primi tra x e y e li mette in una lista e poi stampa la lista. Per trovare quelli tra 10000 e 100000 non finiva più! Ci ha messo ben 4 min!
     
    Top
    .
  12. x-reynik-x
     
    .

    User deleted


    Sono ancora io! ^_^
    Volevo scrivere una funzione che li trovi più velocemente, quindi divide n solo fino alla sua radice ma se sono dispari non fa niente!!! Boh?
    CODICE
    def primo(n):
           l = int(n**0.5) + 1
           if n % 2 == 0 and n != 2:
                   print("Il numero ", n, " non è primo")
           elif n == 2:
                   print(n," è primo")
           else:
                   for x in range(3, l):
                           if n % x == 0 and n != x:
                                   break
                           elif n % x == 0:
                                   if n == x:
                                           print(n, "è un numero primo"),
                                           break
     
    Top
    .
  13.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Ho fatto diverse prove, ora funziona ;)
    CODICE
    def primo(n):
     l = int(n**0.5)+1;
     if n%2==0 and n!= 2:
       print("il numero ",n," non e' primo")
     elif n==2:
       print(n," e' primo")
     else:
       for x in range(3,(l+1)):
         if n%­x==0 and n!= x:
           print(n," non e' un numero primo e' divisibile per ",x)
           break
         elif x%­n==0:
           if n==x:
             print(n,"e' un numero primo")
             break
         elif x==l:
           print(n," e' primo")

    var = input("inserisci un numero:")
    primo(var)


    Il programma non arriverà mai a n perchè si fermerà ad l, quindi devi guardare x==l ;)
     
    Top
    .
  14. x-reynik-x
     
    .

    User deleted


    Grazie mille Rootkit
     
    Top
    .
  15.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Di nulla. ;)
     
    Top
    .
44 replies since 3/11/2009, 17:13   3110 views
  Share  
.