Welcome, Guest. Please login or register.

Autor Subiect: 100 factorial  (Citit de 11268 ori)

0 Membri şi 1 Vizitator vizualizează acest subiect.

Offline Quantum

  • Junior
  • **
  • Mesaje postate: 164
  • Popularitate: +6/-3
Răspuns: 100 factorial
« Răspuns #15 : Aprilie 04, 2012, 12:16:41 a.m. »
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;
}
}

Offline Higgs

  • Junior
  • **
  • Mesaje postate: 229
  • Popularitate: +14/-0
Răspuns: 100 factorial
« Răspuns #16 : Aprilie 20, 2012, 12:00:18 a.m. »
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!

Offline AlexandruLazar

  • Senior
  • ****
  • Mesaje postate: 1752
  • Popularitate: +95/-17
Răspuns: 100 factorial
« Răspuns #17 : Aprilie 20, 2012, 12:03:37 a.m. »
"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.