Exemplo n.º 1
0
        public void CopyTo()
        {
            SimpleList <string> strings = new SimpleList <string>(3);

            strings.Add("Hello ");
            strings.Add("world!");

            string[] stringsArr = new string[2];

            strings.CopyTo(stringsArr, 0);

            Assert.AreEqual("Hello ", stringsArr[0]);
            Assert.AreEqual("world!", stringsArr[1]);
            Assert.AreEqual(2, strings.Count);
            Assert.AreEqual(2, stringsArr.Length);

            Assert.ThrowsException <ArgumentNullException>(() =>
            {
                strings.CopyTo(null, 0);
            });

            Assert.ThrowsException <ArgumentException>(() =>
            {
                stringsArr = new string[0];
                strings.CopyTo(stringsArr, 0);
            });
        }
Exemplo n.º 2
0
        /// <summary>
        /// <paramref name="n"/> の約数を返します。
        /// </summary>
        public static long[] Divisor(long n)
        {
            if (n == 1)
            {
                return new long[] { 1 }
            }
            ;

            var left  = new SimpleList <long>();
            var right = new SimpleList <long>();

            left.Add(1);
            right.Add(n);

            for (long i = 2, d = Math.DivRem(n, i, out long amari);

                 i <= d;
                 i++, d = Math.DivRem(n, i, out amari))
            {
                if (amari == 0)
                {
                    left.Add(i);
                    if (i != d)
                    {
                        right.Add(d);
                    }
                }
            }
            right.Reverse();
            var res = new long[left.Count + right.Count];

            left.CopyTo(res, 0);
            right.CopyTo(res, left.Count);
            return(res);
        }