public static NumarMare operator *(NumarMare a, NumarMare b) { NumarMare produs = new NumarMare(); for (int i = 0; i < b.cifre.Count; i++) { for (int j = 0; j < a.cifre.Count; j++) { int ProdInt = b.cifre[i] * a.cifre[j]; if (i + j >= produs.cifre.Count) { produs.cifre.Add(0); } produs.cifre[i + j] += ProdInt; } } int idx = 0; while (idx < produs.cifre.Count) { int rest = produs.cifre[idx] / 10; produs.cifre[idx] %= 10; if (idx + 1 >= produs.cifre.Count && rest > 0) { produs.cifre.Add(0); } if (rest > 0) { produs.cifre[idx + 1] += rest; } idx++; } return(produs); }
public static NumarMare operator *(NumarMare a, NumarMare b) { NumarMare product = new NumarMare(); for (int i = 0; i < b.digits.Count; i++) { for (int j = 0; j < a.digits.Count; j++) { int integerProduct = b.digits[i] * a.digits[j]; if (i + j >= product.digits.Count) { product.digits.Add(0); } product.digits[i + j] += integerProduct; } } int index = 0; while (index < product.digits.Count) { int remainder = product.digits[index] / 10; product.digits[index] %= 10; if (index + 1 >= product.digits.Count && remainder > 0) { product.digits.Add(0); } if (remainder > 0) { product.digits[index + 1] += remainder; } index++; } return(product); }
static void Main(string[] args) { try { Console.WriteLine("Numele meu este Szakacsi Ferenc-Adam"); Console.WriteLine("Acest program lucreaza cu numere mari"); int a = int.Parse(Console.ReadLine()); int b = int.Parse(Console.ReadLine()); int c = int.Parse(Console.ReadLine()); int d = int.Parse(Console.ReadLine()); NumarMare m = new NumarMare(a); NumarMare n = new NumarMare(b); NumarMare o = m.Factorial(c); NumarMare p = m.TermenFibonacci(d); Console.WriteLine($"Adunarea rezulta:{m + n}"); Console.WriteLine($"Inmultirea rezulta:{m * n}"); Console.WriteLine($"Factorialul lui {c} este {o}"); Console.WriteLine($"Termenul {d} al sirului lui Fibonacci este {p}"); Console.ReadKey(); } catch (Exception e) { Console.WriteLine($" {e.Message}"); } }
static void Main(string[] args) { byte[] numar1 = new byte[5]; for (int i = 0; i < numar1.Length; i++) { numar1[i] = (byte)(7 + i % 3); } byte[] numar2 = new byte[8]; for (int i = 0; i < numar2.Length; i++) { numar2[i] = 2; } NumarMare n1 = new NumarMare(numar1); NumarMare n2 = new NumarMare(numar2); Console.WriteLine("n1 = {0}", n1); Console.WriteLine("n2 = {0}", n2); Console.WriteLine("n1 + n2 = {0}", n1 + n2); NumarMare a = new NumarMare(new byte[] { 1, 2, 4 }); NumarMare b = new NumarMare(new byte[] { 3, 2 }); Console.WriteLine("a * b = {0}", a * b); Console.WriteLine("\nFibonacci(100) : {0}", Fibonacci(100)); Console.ReadKey(); }
static void Main(string[] args) { NumarMare a = new NumarMare("128"); NumarMare b = new NumarMare(128); Console.WriteLine(a + b); Console.WriteLine(NthFibonacciNumber(100)); Console.WriteLine(BigFactorial(1000)); }
public NumarMare Factorial(int n) { NumarMare factorial = new NumarMare(1); for (int i = 2; i <= n; i++) { factorial *= new NumarMare(i); } return(factorial); }
static NumarMare BigFactorial(int n) { NumarMare factorial = new NumarMare(1); for (int i = 2; i <= n; i++) { factorial = factorial * new NumarMare(i); } return(factorial); }
static void Main(string[] args) { NumarMare nr1 = new NumarMare("9349713678465"); NumarMare nr2 = new NumarMare("2723524238725"); Console.WriteLine(nr1); Console.WriteLine(nr2); Console.WriteLine($"Suma celor doi numari mari este : {nr1+nr2}"); Console.WriteLine($"Produsul celor doi numari mari este : {nr1*nr2}"); Console.WriteLine($"Sirul lui fibonacci: {Fibonacci(100)}"); Console.WriteLine($"Factorial: {Factorial(1000)}"); Console.ReadKey(); }
public static NumarMare Fibonacci(int n) { NumarMare a = new NumarMare(new byte[] { 0 }); NumarMare b = new NumarMare(new byte[] { 1 }); for (int i = 0; i < n; i++) { NumarMare temp = a; a = b; b = temp + b; //Console.WriteLine("{0} + {1} = {2}", temp, a, b); } return(a); }
private static NumarMare Fibonacci(int n) { NumarMare fibo1 = new NumarMare(1); NumarMare fibo2 = new NumarMare(1); NumarMare fibonext = new NumarMare(); if (n <= 2) { return(fibo1); } for (int i = 3; i <= n; i++) { fibonext = fibo1 + fibo2; fibo1 = new NumarMare(fibo2.cifre); fibo2 = new NumarMare(fibonext.cifre); } return(fibonext); }
static NumarMare NthFibonacciNumber(int n) { NumarMare a = new NumarMare(1); NumarMare b = new NumarMare(1); NumarMare c = new NumarMare(); if (n <= 2) { return(a); } for (int i = 3; i <= n; i++) { c = a + b; a = new NumarMare(b.digits); b = new NumarMare(c.digits); } return(c); }
public NumarMare TermenFibonacci(int n) { NumarMare a = new NumarMare(0); NumarMare b = new NumarMare(1); NumarMare c = new NumarMare(1); NumarMare d = new NumarMare(); if (n <= 2) { return(c); } for (int i = 3; i <= n; i++) { d = b + c; b = new NumarMare(c.cifre); c = new NumarMare(d.cifre); } return(d); }
public static NumarMare operator +(NumarMare a, NumarMare b) { NumarMare suma = new NumarMare(); int idx = 0; while (idx < a.cifre.Count && idx < b.cifre.Count) { int CifraNoua = a.cifre[idx] + b.cifre[idx]; suma.cifre.Add(CifraNoua); idx++; } while (idx < a.cifre.Count) { int CifraNoua = a.cifre[idx]; suma.cifre.Add(CifraNoua); idx++; } while (idx < b.cifre.Count) { int CifraNoua = b.cifre[idx]; suma.cifre.Add(CifraNoua); idx++; } idx = 0; while (idx < suma.cifre.Count) { int rest = suma.cifre[idx] / 10; suma.cifre[idx] %= 10; if (rest > 0) { if (idx + 1 >= suma.cifre.Count) { suma.cifre.Add(0); } suma.cifre[idx + 1] += rest; } idx++; } return(suma); }
public static NumarMare operator +(NumarMare a, NumarMare b) { NumarMare suma = new NumarMare(); int index = 0; while (index < a.cifre.Count && index < b.cifre.Count) { int nr = a.cifre[index] + b.cifre[index]; suma.cifre.Add(nr); index++; } while (index < a.cifre.Count) { int nr = a.cifre[index]; suma.cifre.Add(nr); index++; } while (index < b.cifre.Count) { int nr = b.cifre[index]; suma.cifre.Add(nr); index++; } index = 0; while (index < suma.cifre.Count) { int rest = suma.cifre[index] / 10; suma.cifre[index] %= 10; if (rest > 0) { if (index + 1 >= suma.cifre.Count) { suma.cifre.Add(0); } suma.cifre[index + 1] += rest; } index++; } return(suma); }
public static NumarMare operator +(NumarMare a, NumarMare b) { NumarMare sum = new NumarMare(); int index = 0; while (index < a.digits.Count && index < b.digits.Count) { int newDigit = a.digits[index] + b.digits[index]; sum.digits.Add(newDigit); index++; } while (index < a.digits.Count) { int newDigit = a.digits[index]; sum.digits.Add(newDigit); index++; } while (index < b.digits.Count) { int newDigit = b.digits[index]; sum.digits.Add(newDigit); index++; } index = 0; while (index < sum.digits.Count) { int remainder = sum.digits[index] / 10; sum.digits[index] %= 10; if (remainder > 0) { if (index + 1 >= sum.digits.Count) { sum.digits.Add(0); } sum.digits[index + 1] += remainder; } index++; } return(sum); }