您的位置:首页 > 编程语言 > C#

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

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

试题:

         判断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;

           }

       }




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: