Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
 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}");
     }
 }
Example #4
0
        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();
        }
Example #5
0
        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));
        }
Example #6
0
        public NumarMare Factorial(int n)
        {
            NumarMare factorial = new NumarMare(1);

            for (int i = 2; i <= n; i++)
            {
                factorial *= new NumarMare(i);
            }
            return(factorial);
        }
Example #7
0
        static NumarMare BigFactorial(int n)
        {
            NumarMare factorial = new NumarMare(1);

            for (int i = 2; i <= n; i++)
            {
                factorial = factorial * new NumarMare(i);
            }
            return(factorial);
        }
Example #8
0
        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();
        }
Example #9
0
        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);
        }
Example #10
0
        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);
        }
Example #11
0
        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);
        }
Example #12
0
        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);
        }
Example #13
0
        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);
        }
Example #14
0
        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);
        }
Example #15
0
        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);
        }