示例#1
0
        /// <summary>
        /// Divisores de um número
        /// </summary>
        /// <param name="value">Número</param>
        /// <returns>Lista de Divisores de um número</returns>
        public static PrimeDividers Dividers(int value)
        {
            List <long>   b = Primes(100);
            PrimeDividers r = new PrimeDividers();
            long          n = value;
            int           i = 0;

            while (n != 1)
            {
                int divider = Convert.ToInt32(b[i]);
                Console.WriteLine("divider {0}", i);

                if ((n % divider) == 0)
                {
                    PrimeDivider pd = new PrimeDivider(divider, 1);
                    r.Add(pd);
                    n /= divider;
                }
                else
                {
                    i++;
                }
            }
            return(r);
        }
示例#2
0
        public static double MDC(params int[] n)
        {
            int    indexer = -1;
            double value   = 0;
            int    size    = n.Length;
            double val     = 0;

            PrimeDividers[] r = new PrimeDividers[size];

            for (int i = 0; i < n.Length; i++)
            {
                r[i] = Dividers(n[i]);
            }

            //if (size > 1)
            //{
            for (int i = 0; i < r[0].Content.Count; i++)
            {
                //value = Math.Pow(r[0].Content[i].Divider, r[0].Content[i].Exponent);
                for (int j = 1; j < size; j++)
                {
                    int l = r[j].Content.Count;
                    for (int k = 0; k < l; k++)
                    {
                        if ((r[j].Content[k].Divider == r[0].Content[i].Divider) &&
                            (r[j].Content[k].Exponent == r[0].Content[i].Exponent))
                        {
                            val = System.Math.Pow(r[j].Content[k].Divider, r[j].Content[k].Exponent);
                            if (val > value)
                            {
                                indexer = i;
                                value   = val;
                                Console.WriteLine("divider pow({0},{1})", r[j].Content[k].Divider, r[j].Content[k].Exponent);
                            }
                        }
                    }
                }
            }
            //}

            if (value == 0)
            {
                return(1);
            }
            return(value);
        }