.将大于整数m且小于n的k个素数存入数组x。请编写函数num()实现程序的要求

解决方案 »

  1.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;namespace T392508289
    {
        class Program
        {
            static IEnumerable<int> Primes()
            { 
                yield return 2;
                int i = 3;
                while (true)
                {
                    if (Enumerable.Range(2, i - 2).All(x => i % x != 0))
                        yield return i;
                    i++;
                }
            }        static void num(ref int[] x, int m, int n)
            {
                if (m >= n) return;
                x = Primes().SkipWhile(_ => _ <= m).TakeWhile(_ => _ < n).ToArray();
            }        static void Main(string[] args)
            {
                Console.WriteLine("m:");
                int m = int.Parse(Console.ReadLine());
                Console.WriteLine("n:");
                int n = int.Parse(Console.ReadLine());
                int[] x = default(int[]);
                num(ref x, m, n);
                for (int i = 0; i < x.Length; i++)
                    Console.WriteLine(x[i]);
            }
        }
    }
      

  2.   

        class Program
        {
            static void Main(string[] args)
            {
                int[] x = num(2, 40, 10);            x.ToList().ForEach(p => Console.WriteLine(p));
                Console.Read();
            }        static int[] num(int m,int n,int k)
            {
                List<int> result = new List<int>();            for (int i = m; i <= n; i++)
                {
                    if (i == 2 || Math.Pow(2, i) % i == 2)
                    {
                        result.Add(i);
                    }
                }            return result.ToArray();
            }
        }
      

  3.   

            static int[] num(int m,int n,int k)
            {
                List<int> result = new List<int>();            for (int i = m; i <= n && k > 0; i++)
                {
                    if (i == 2 || Math.Pow(2, i) % i == 2)
                    {
                        k--;
                        result.Add(i);
                    }
                }            return result.ToArray();
            }
      

  4.   

    static int[] num(int m,int n,int k)
            {
    List<int> value= new List<int>();
     
                for (int i = m,int j= 0; i <= n && j < k; i++)
                {
                    if (i == 2)
                    {
                        j++;
                        value.Add(i);
                    }
    else
    {
    for(int m = 2 ;m<i;++m)
    {
    if(i%m!=0&&i==(m+1))
    {
                        j++;
                        value.Add(i);
    }
    }
    }
                }
    }//算法很垃圾,但是很“底层”