之前遇到的一个题目,我把它写的灵活了一点,写了两种实现方法,方法一:是试题给的提示来写的,方法二:是按百度百科中对“素数”的理解来写的,用的都是递归。
{
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;
}
}
试题:
判断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;
}
}