Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: Esame Impellente

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    50

    Esame Impellente

    Ho letto le varie soluzioni ricorsive ma quella

    public static int sommaprimi(int n) {
    int sum = 0;
    if (n==1)
    sum=1;
    else
    sum=n+sommaprimi(n-1);
    return sum;

    va solo per i valori inferiori di 4 e soprattutto con il 4 non funziona da 10

    un aiuto vivissimo non sarebbe male

  2. #2
    Non mi è proprio chiaro quello che vuoi fare. Supponendo che il linguaggio sia Java il tuo metodo è corretto se vuoi sommare i primi n numeri (sebbene sarebbe meglio if(n <= 1)).

    SO: Debian Sarge kernel 2.6.11
    Lang: Java, C++, C

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    50

    numeri primi

    Si è in Java. il problema sta nel fatto
    che il programmino non funziona per n=4 e
    per tutti i numeri superiori a 4.
    volevo sapere se c'era un modo per risolvere
    questo problema?

    se puoi aiutarmi mi faresti un gran favore

  4. #4
    ehm... con 4 funziona: 4+3+2+1 = 10
    SO: Debian Sarge kernel 2.6.11
    Lang: Java, C++, C

  5. #5
    Scusa, ho capito solo ora che intendi sommare i primi n numeri primi. Adesso purtroppo ho un sonno epico, se posso domani provo a scrivere il codice
    SO: Debian Sarge kernel 2.6.11
    Lang: Java, C++, C

  6. #6
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Ho l'impressione che ci sia un equivoco di fondo: il codice indicato (anche se non conosco java) mi sembra corretto per fare "la somma dei primi n numeri" cioè indicato un numero "n" lui fa la somma di tutti quelli tra 1 e n (come dice lucis : 4+3+2+1 = 10)

    La "somma dei primi n NUMERI PRIMI" (cioè divisibili solo per 1 e per se stessi) è una cosa COMPLETAMENTE diversa anche perchè, prima di sommare ogni addendo bisogna verificare che sia primo, è questo è tutt'altro che semplice, (vedi: http://www.utm.edu/research/primes/prove/prove4_3.html)
    In questo caso indicando n = 4 suppongo si dovrebbe avere 1+2+3 (gli unici primi minori di 4) = 6

    Ho capito male ?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    50

    numeri primi

    La sommatoria dei primi numeri primi è 1+2+3+5=11 e questo il

    problema, il mio codice funziona fino a n=3 e poi no cmq

    provero a fare i due metodi uno per dire che è primo il secondo con

    la ricorsione.

  8. #8
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    E' qiusto il problema: come fa il tuo algoritmo a stabilire se un numero è primo oppure no ?
    Il tuo codice funziona fino a n=3 semplicemente perchè i primi 3 numeri (1,2,3) sono primi e consecutivi....
    Come fai a stabilire che poi devi saltare il 4, il 6, l'8, il 9, ...etc

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    50

    numeri primi

    ma non esiste un caso base per
    indicare che un numero è primo?
    l'unico modo è quello di usare due
    metodi in modo da constatare prima se
    è primo e poi facendo un metodo ricorsivo per fare la sommatoria?

  10. #10
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Non è così semplice; se vai a leggere il link che ti avevo indicato (purtroppo l'ho trovato in inglese, ma di sicuro esistono anche in italiano) vedrai che provare per via matematica (quindi con un algoritmo che possa essere eseguito da un calcolatore) se un numero è primo oppure no è tutt'altro che facile. E' facile, così a voce, dire che sono primi 1,2,3,5,7,11,13,17,19,23,29, etc... ma farlo con un programma...

    Mi sembra che tu sia "fissato" con l'uso di un programma ricorsivo ma, se ben ricordo, i casi "classici" in cui si usava un programma come questo sono quelli della "somma dei primi n numeri" (quello che hai indicato tu) oppure del calcolo del "fattoriale" (cioè il prodotto dei primi n numeri)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.