Numero primo

di il
11 risposte

Numero primo

Metodo statico isPrimo che restituisce vero se n è numero primo , cioè se non divisibile per nessun numero compreso tra 2 e n-1
public static boolean isPrimo(int n) {
if (n >= 1 && n < 3) {
return true;
}else {
return false;
}
}
cosa sbaglio?

11 Risposte

  • Re: Numero primo

    1: non si considera
    2: primo
    3: primo
    4: no
    5: si
    6: no
    7: si
    8: no
    9: no
    10: no
    ecc

    101 e' primo? e 111? e 1111? e 111111?
    tutti gli interi formati solo da 1 (uno) sono primi?

    https://en.m.wikipedia.org/wiki/List_of_prime_number
  • Re: Numero primo

    Si lo so quali sono ma non so come scriverlo...
    public static boolean isPrimo(int n) {
    For ( int x = 2; x < n; x++){
    If(x % n ==0){
    Return true;
    Else
    Return false
  • Re: Numero primo

    djangoJava ha scritto:


    Si lo so quali sono ma non so come scriverlo...
    Se hai un numero n in input, allora devi "provare" a dividerlo per tutti i numeri tra 2 e n/2 compresi (non serve arrivare fino a n). Se è divisibile per almeno uno di questi (ovvero resto 0), allora n NON è primo.
    Questo è l'approccio basilare non ottimizzato.
  • Re: Numero primo

    Quindi nel for devo mettere n/2?
    Poi faccio l'if...
    Ho difficoltà a scrivere il for
  • Re: Numero primo

    andbin ha scritto:


    djangoJava ha scritto:


    Si lo so quali sono ma non so come scriverlo...
    Se hai un numero n in input, allora devi "provare" a dividerlo per tutti i numeri tra 2 e n/2 compresi (non serve arrivare fino a n). Se è divisibile per almeno uno di questi (ovvero resto 0), allora n NON è primo.
    Questo è l'approccio basilare non ottimizzato.
    Quindi nel for devo mettere n/2?
    Poi faccio l'if...
    Ho difficoltà a scrivere il for
  • Re: Numero primo

    andbin ha scritto:


    djangoJava ha scritto:


    Si lo so quali sono ma non so come scriverlo...
    Se hai un numero n in input, allora devi "provare" a dividerlo per tutti i numeri tra 2 e n/2 compresi (non serve arrivare fino a n). Se è divisibile per almeno uno di questi (ovvero resto 0), allora n NON è primo.
    Questo è l'approccio basilare non ottimizzato.
    if (n<2)
    return false;
    if (n<=3)
    Return true;

    if (n%2==0)
    return false;
    for (int i=3;i<n;i=i+2){
    if ( n%i==0)
    return false;
    }
    Return true

    Così?
  • Re: Numero primo

    djangoJava ha scritto:


    Così?
    No. Allora: hai un numero es. 65, quindi testerai in teoria
    65 % 2 == 0 ?
    65 % 3 == 0 ?
    65 % 4 == 0 ?
    .....
    65 % 31 == 0 ?
    65 % 32 == 0 ?

    Non ha senso provare 33 (e oltre) perché 65/33 fa meno di 2.

    P.S. con 65 la divisione per 5 ovviamente indica già che non è primo.
  • Re: Numero primo

    Mi dispiace ma non sto capendo come scrivere...con il codice che le ho mandato,sembra che venga
  • Re: Numero primo

    Questo
    Allegati:
    31874_109739cb8a737d587a701ed27b600fd2.png
    31874_109739cb8a737d587a701ed27b600fd2.png
  • Re: Numero primo

    Ti è stato detto di provare fino a n/2

    P.S. Usa i tag CODE per il codice non uno screenshot
  • Re: Numero primo

    oregon ha scritto:


    Ti è stato detto di provare fino a n/2

    P.S. Usa i tag CODE per il codice non uno screenshot
    Ok quindi nel for metto n/2 giusto?
Devi accedere o registrarti per scrivere nel forum
11 risposte