Numero primo

di Anonimizzato31874 il
11 risposte
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

  • 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
  • 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
  • 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
  • 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ì?
  • 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.
  • Mi dispiace ma non sto capendo come scrivere...con il codice che le ho mandato,sembra che venga
  • Questo
    Allegati:
    31874_109739cb8a737d587a701ed27b600fd2.png
    31874_109739cb8a737d587a701ed27b600fd2.png
  • Ti è stato detto di provare fino a n/2

    P.S. Usa i tag CODE per il codice non uno screenshot
  • 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