using System;
namespace studywork2
{
    public class work
    {
        public static void sumjiecheng()
        {
            long n = 1, t = 1, s = 0;
            for (; n <= 20; n++)
            {
                t *= n;
                s += t; 
            }
            Console.WriteLine("1到20的阶乘之和为:");
            Console.WriteLine(s);
        }
        public static void ifxushu(double n)
        {
            double t = 0, i = 2;
            for (; i < n; i++)
            {
                t = n % i;
                if (t == 0)
                {
                    Console.WriteLine("输入的数不是质数.");
                    break;
                }
            }
            if (i == n) Console.WriteLine("输入的数是质数.");
        }
        public static void quickpi()
        {
            int N = 100;
int M = 500;
int B = 100;
int L = 4;
// Machin公式
int[] s = new int[M / L];
            int[] r1 = new int[N];
            int[] r2 = new int[N];
            int[] r3 = new int[N];
            int[] r4 = new int[N];
            int[] d1 = new int[N];
            int[] d3 = new int[N];
int i, k, t, d2, d4, mp = M / L / 20;
double Start, Finish;
r1[0] = 1;
r1[1] = 3;
r3[0] = 4;
Start = Environment.TickCount;
            for (k = 0; k < M / L; ++k)
            {
t = r1[0] * B;
d1[0] = t / 0x5;
r1[0] = t % 0x5;
                t = r3[0] * B;
d3[0] = t / 0xEF;
r3[0] = t % 0xEF;
s[k] = d1[0] - d3[0];
int tag = 0;
                for (i = 1; i < N; ++i)
                {
t = r1[i] * B + d1[i - 1];
d1[i] = t / 0x19;
r1[i] = t % 0x19;
t = r2[i] * B + d1[i];
d2 = t / (2 * i + 1);
r2[i] = t % (2 * i + 1);
//
t = r3[i] * B + d3[i - 1];
d3[i] = t / 0xDF21;
r3[i] = t % 0xDF21;
t = r4[i] * B + d3[i];
d4 = t / (2 * i + 1);
r4[i] = t % (2 * i + 1);
                    if (tag == 1)
                    {
s[k] += (d2 - d4);
tag = 0;
}
                    else
                    {
s[k] += (d4 - d2);
tag = 1;
}
}
}
            for (i = M / L - 1; i >= 0; i--)
            {
                while (s[i] >= B)
                {
s[i - 1]++;
s[i] -= B;
}
                while (s[i] < 0)
                {
s[i - 1]--;
s[i] += B;
}
            }
            Finish = Environment.TickCount;
            Console.WriteLine("派的近似值为:");
            Console.Write("3.");
            for (i = 0; i < 28; ++i)
                Console.Write(s[i]);
            Console.WriteLine(" ");
            Console.WriteLine("运行时间(ms):{0}", Finish - Start);
        }
        public static void Main()
        {
            double n;
            Console.WriteLine("......第一题......");
            sumjiecheng();
            Console.WriteLine("......第二题......");
            Console.WriteLine("请输入要判断的数:");
            n = Convert.ToInt32(Console.ReadLine());
            ifxushu(n);
            Console.WriteLine("......第三题......");
            quickpi();
            String str = Console.ReadLine();
        }
    }
}

评论