C# 递归求任意两数之间的素数

之前遇到的一个题目,我把它写的灵活了一点,写了两种实现方法,方法一:是试题给的提示来写的,方法二:是按百度百科中对“素数”的理解来写的,用的都是递归。

试题:

         判断101-200之间有多少个素数,并输出所有素数。
        1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,       则表明此数不是素数,反之是素数。


 public static void Main(string[] args)
        {
            Test3();
       }


       public static void Test3()
       {
           Console.WriteLine("请输入求素数的起始数字用','隔开:");
           string y = Console.ReadLine();
           Console.WriteLine("这个范围内的素数有:{0}", GetSuShu(int.Parse(y.Split(',')[0]), int.Parse(y.Split(',')[1]), ""));
       }
        
       //方法一
       public static string GetSuShu(int x, int y, string sushu)
       {
           bool check = true;//是素数
           for (int i = 2; i < x; i++)
           {
               if (x % i == 0)
               {
                   check = false;
               }
           }

           if (check == true && x < y)
           {
               return GetSuShu(x + 1, y, sushu += x + "、");
           }
           else if (check == false && x < y)
           {
               return GetSuShu(x + 1, y, sushu);
           }
           else
           {
               return sushu;
           }
       }

       
       <pre name="code" class="csharp">     
<pre name="code" class="csharp"> //方法二
       public static string GetSuShu2(int x, int y, string sushu)
       {

           int count = 0;
           for (int i = 1; i <= x; i++)
           {
               if (x % i == 0)
               {
                   count++;
               }
               if (count > 2)
                   return GetSuShu(x + 1, y, sushu);
           }
           if (x < y)
           {
               return GetSuShu(x + 1, y, sushu += x + "、");
           }
           else
           {
               return sushu;
           }
       }

 

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值