impara il linguaggio di programmazione per calcolare le funzioni sugli interi

1

So qualcosa su Pascal, Mathematica e Matlab, ma non ho idea dei linguaggi C, C ++, C #.

Voglio imparare una delle lingue in cui sono veloci ed esatti per calcolare alcune funzioni aritmetiche per grandi numeri (ad esempio più grandi di $ 10 ^ 3000 $). Ho chiesto a qualcuno e ha detto che ha usato il C ++ e ha detto che ho calcolato questa sequenza in meno di 10 minuti.

Voglio conoscere C, C ++, C # e tipo visivo di questi programmi e sapere quale è meglio per il mio obiettivo.

Sia $ f $ una funzione aritmetica e A = {k1, k2, ..., kn} sono numeri interi in ordine crescente.

Ora voglio iniziare con k1 e confrontare f (ki) con f (k1). Se f (ki) > f (k1), metti ki come k1.

Ora inizia con ki e confronta f (kj) con f (ki), per j > i. Se f (kj) > f (ki), metti kj come ki e ripeti questa procedura.

Alla fine avremo una sequenza secondaria B = {L1, ..., Lm} di A da questa proprietà: f (L (i + 1)) > f (L (i)), per ogni 1 < = i < = m-1

Ho scritto un codice per questo programma con Mathematica e ci vogliono alcune ore per calcolare f di ki o l'insieme B per grandi numeri.

Ad esempio, let f è la funzione di divisore degli interi. Sai come scrivere il codice per il mio scopo in Mathematica o Matlab. È preferibile Mathematica.

    
posta asd 28.01.2011 - 08:41
fonte

5 risposte

1

Ogni attività è diversa.

Direi, scegli un micro-benchmark imperfetto che si avvicina di più alle tue esigenze, ad es. link e tracci le tue conclusioni.

    
risposta data 28.01.2011 - 09:43
fonte
1

Tenendo a mente i "numeri grandi" (quindi presumibilmente più grandi di 2 ^ 32), il che significa che è "C o C ++ o C # e una libreria decente". Alcune lingue vengono fornite con supporto per numeri grandi (Smalltalk, Haskell, Common Lisp) e altre no.

    
risposta data 28.01.2011 - 10:23
fonte
0

È meglio usare una lingua con un supporto decente per grandi numeri, ad esempio Scheme o un linguaggio specializzato come Mathematica o Maxima. Con C ++ la tua scelta è praticamente limitata a libgmp.

    
risposta data 28.01.2011 - 11:53
fonte
0

C e C ++ non supportano nativamente numeri molto grandi; dovresti usare una libreria bignum di terze parti (non posso parlare con C #).

Francamente, C e C ++ non sono i migliori strumenti per il lavoro sul numero di crunch.

    
risposta data 28.01.2011 - 16:33
fonte
0

Se stai cercando di fare aritmetica di altissima precisione (non proprio la terminologia corretta, dato che questo è intero anziché virgola mobile), il 99,9% del tempo della CPU sarà speso nelle funzioni della libreria per detta aritmetica, e vinse Non importa se il livello utente è un intrepreter o un linguaggio veloce compilato. Ciò che conta è trovare una buona libreria "grande intero", con un'interfaccia decente per una lingua che ti piace.

    
risposta data 28.01.2011 - 20:48
fonte

Leggi altre domande sui tag