TRE

Un problemino di programmazione per tutti (e per nessuno)

Trovare la somma di tutti i numeri primi minori di 2 000 000.

Scrivere un programma che risolve il problema, postare il risultato assieme alle seguenti informazioni:

  1. macchina usata
  2. linguaggio di programmazione
  3. tempo impiegato
  4. numero di righe del programma

 

Questa voce è stata pubblicata in Algoritmi, Aritmetica, Informatica, Matematica, Programmazione e contrassegnata con , , , , , , , , . Contrassegna il permalink.

15 risposte a TRE

  1. Filippo Bisconcin ha detto:

    142913828922???

    • vvvlol123 ha detto:

      a me viene diverso, ma provare ogni singolo dispari fino a 2 milioni non penso sia la soluzione migliore, ci mette quasi 5 minuti.

      • Filippo Bisconcin ha detto:

        Codice:
        Public Class Form1
        Function pr(ByVal numero As Double)
        For x = 2 To Math.Sqrt(numero)
        If numero / x = numero \ x Then Return 0
        Next
        Return 1
        End Function
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim somma As Double = 2, numero As Double = 2000000 ‘, metà = Int(Math.Sqrt(numero))
        For a = 3 To numero Step 2
        If pr(a) = 1 Then somma = somma + a
        Next
        MsgBox(somma)
        End Sub
        End Class

        1) Intel pentium 4 2.80 GHz
        2) Visual Basic
        3) 1 minuto
        4) 15, compreso msgbox

    • Filippo Bisconcin ha detto:

      cosa ti viene?

      • vvvlol123 ha detto:

        errore mio, avevo sbagliato il tipo della variabile (int invece che long). Migliorato il programma (da 4-5 minuti a 1 secondo!):
        1) i5 2410m 2.3 GHz
        2)c++
        3)1.132~1.143
        4)18 tutto compreso

        • vvvlol123 ha detto:

          Dovrebbe esser identico a quello di bisco
          #include

          bool is_prime(int num){
          for (int i = 3; i <= sqrt(num);i += 2) if (num % i == 0) return false;
          return true;
          }

          int main(){
          long sum = 2,cap = 2000000;
          for (int i = 3; i < cap; i += 2) if(is_prime(i)) sum += i;
          return 1;
          }

          Ho diminiuto le righe nella funzione is_prime visto che gli do solo numeri dispari.

      • Filippo Bisconcin ha detto:

        ma ti torna il risultato??

    • bobcarr ha detto:

      risultato esatto; manca il codice e i tempi impiegati

      • Filippo Bisconcin ha detto:

        Codice:
        Public Class Form1
        Function pr(ByVal numero As Double)
        For x = 2 To Math.Sqrt(numero)
        If numero / x = numero \ x Then Return 0
        Next
        Return 1
        End Function
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim somma As Double = 2, numero As Double = 2000000 ‘, metà = Int(Math.Sqrt(numero))
        For a = 3 To numero Step 2
        If pr(a) = 1 Then somma = somma + a
        Next
        MsgBox(somma)
        End Sub
        End Class

        1) Intel pentium 4 2.80 GHz
        2) Visual Basic
        3) 1 minuto
        4) 15, compreso msgbox

  2. Filippo Bisconcin ha detto:

    1) Intel pentium 4 2.80 GHz
    2) Visual Basic
    3) meno di 1 sec
    4) 15, sintassi inutile compresa

    soluzione: 141677

    • Filippo Bisconcin ha detto:

      Ecco il codice:
      Public Class Form1
      Function pr(ByVal numero As Double)
      For x = 2 To Math.Sqrt(numero)
      If numero / x = numero \ x Then Return 0
      Next
      Return 1
      End Function
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      Dim somma = 0, numero = 2000000, metà = Int(Math.Sqrt(numero))
      For a = 1 To metà
      If pr(a) = 1 Then somma = somma + a
      Next
      MsgBox(somma)
      End Sub
      End Class

    • Filippo Bisconcin ha detto:

      forse andare da 1 a radice di 2000000 è stata una cavolata! devo andare da 2 a…2000000…provo ma ci metterà un sacco di tempo

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...