Ştiri:

Vă rugăm să citiţi Regulamentul de utilizare a forumului Scientia în secţiunea intitulată "Regulamentul de utilizare a forumului. CITEŞTE-L!".

Main Menu

100 factorial

Creat de automat, Martie 05, 2012, 11:29:27 PM

« precedentul - următorul »

0 Membri şi 1 Vizitator vizualizează acest subiect.

Quantum

In Java am folosit clasa java.math.BigInteger din API si mi-a dat 648. Desigur am folosit solutia cu stocarea cifrelor numarului sugerata in posturile anterioare.

import java.math.BigInteger;

public class FactorialMare
{
public static void main(String[] args)
{
int suma=0;
final int FACTORIAL=100;
BigInteger rezultatFactorial=factorial(FACTORIAL);
System.out.println(FACTORIAL+"! este \n" + rezultatFactorial);
StringBuilder sir=new StringBuilder(rezultatFactorial.toString());
for (int i=0; i<sir.length();i++)
{
suma+=Character.getNumericValue(sir.charAt(i));
}
System.out.println("Suma cifrelor este: "+suma);
}

public static BigInteger factorial(long n)
{
BigInteger rezultat = BigInteger.ONE;
for (int i = 1; i <= n; i++)
{
rezultat = rezultat.multiply(new BigInteger(i + ""));
}
return rezultat;
}
}


Higgs

Ar trebui sa arunci o privire pe operatiile pe numere mari. Nu sunt sigur daca am voie sa postez link-uri externe aici (???). In orice caz pe Infoarena sunt niste implementari foarte dragute pentru lucrul cu numere mari, usor de inteles, si foarte mici ca intindere. Algoritmul se reduce la efectuarea mai multor inmultiri ale unui numar mare, cu un numar mic. La sfarsit vei avea rezultatul intr-un vector (cu foarte multe pozitii), si poti sa faci tot ce vrei tu cu el. Matematic(nu sunt un mare pasionat de matematica), ei bine, am citi ceea ce a scris @zec. A pornit bine. Insa cum spunea si el lucrurile se complica de aici. Oricum am da-o, tot trebuie sa aflam suma cifrelor acelui numar. Si singurul mod prin care eu il vad, este sa ne intoarcem la algoritmul de inmultire invatat prin clasa a2-a, si sa facem o implementare. Nu stiu Java, sunt deocamdata la inceput cu informatica, stiu C++. Am auzit insa ca in Java se paote lucra mai usor cu numerele mari. Bafta!

AlexandruLazar

"Mai uşor" nu e ceva care ţine atât de limbaj cât de API-urile disponibile. În cazul Java, biblioteca standard include o clasă bignum -- dar există diverse implementări pentru multe alte limbaje. Wikipedia dă o listă micuţă aici.