Funzione per trovare numeri primi

« Older   Newer »
 
  Share  
.
  1. RootkitNeo
     
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    CITAZIONE (x-reynik-x @ 9/11/2009, 16:52)
    Non capisco queste parti:

    if n%2==0 and n!=2:
    if n%­i==0 and n!=i:

    != significa diverso e quindi se n è diverso da 2(nel primo caso) dovrebbe essere classificato come non primo! E lo stesso nel secondo caso.

    Dunque, si leggerebbe "diverso da".
    Io nel primo caso dico: se n%2 è uguale a 0 (quindi se la divisione non ha resto), e n!= da 2, e il numero che metto non è 2 il numero non è primo. Esempio: n=4;

    if 4%2==0 and 4!=2:

    In poche parole verifico solamente che il numero sia un numero pari, ma che sia diverso da 2.

    Nel secondo caso invece, if n%­i==0 and n!=i:, dico: Se n%­i è uguale a 0 (se il resto della divisione è 0) e n!=i il numero non è primo. Questo perchè controllo i numeri dispari (in java avrei messo in modo diverso il ciclo), ovvero, se n=3 e i (che inizia da 3) è uguale ad n (l'uguaglianza si ha al primo ciclo in questo caso) da resto 0 (quindi è divisibile), e n è diverso da i, il numero non è pari. Effettuo il controllo sul diverso da i proprio per controllare che non sto avendo resto 0 solo perchè i numeri sono uguali.

    CODICE
    n=3;

    i al primo ciclo è 3:
    if n diviso i da resto 0, e n è diverso da i, il numero non è primo.


    Sotto se noti c'è un elif che controllo se da resto 0,m e appena sotto un if per vedere se sono uguali.
    Per finire: se n è uguale a 11 e i è uguale a 11 è ovvio mi dia resto 0, e se i numeri sono uguali è primo! ;)
     
    Top
    .
44 replies since 3/11/2009, 17:13   3110 views
  Share  
.