一、概念类
①、什么是质数?
质数(prime number)又称素数,有无限个。
质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因素。
二、流程类
①、求质数(不含方法的求法)
②、求质数(含方法的求法)
三、代码类
①、求质数(不含方法的求法)
static void Main(string[] args)
{
while(true) //无限循环,直至遇到break语句
{
Console.WriteLine("请输入数字"); //在控制台上输入内容
string strnumber = Console.ReadLine(); //读取控制台数据,并将其赋值给变量
if (strnumber=="q") //如果变量的内容为"q"
{
break; //跳出循环
}
else //否则
{
int number = Convert.ToInt32(strnumber); //将字符串变量转换为int类型变量number
for (int i = 2; i < number; i++) //for循环,从2开始
{
if (number % i == 0) //如果输入数字除i取余为零
{
Console.WriteLine("不是质数"); //则在控制台写入内容:不是质数
}
}
Console.WriteLine("是质数"); //否则,则在控制台输入:是质数
}
}
}
②、求质数(含方法的求法)
static void Main(string[] args)
{ //在整个代码逻辑的梳理中精简很重要,尽量减少不必要的冗余,比如可采用方法调方法
//1、有些可以不用设置方法,我的判q采用了方法,反而使问题变复杂了
//2、出现bug原来还可以通过提示来躲避,并非一定要深究那个问题(小杨老师说的^_^)
//3、方法的返回值是很灵活的,不仅仅局限在bool类型
while(true) //无限循环
{
Console.WriteLine("请输入数字,输入q退出"); //在控制台输入内容
string str = Console.ReadLine(); //读取控制台内容,并赋值给变量str
if (str == "q") //如果字符串变量str="q"
{
break; //那么,直接退出循环
}
else
{
int number = IsNumber(str); //调用IsNumber方法判断str是否为数字,并将返回值赋予给int类型变量
bool result = IsPrime(number); //调用IsPrime方法,判断number是否为质数,并将返回值赋值给bool类型变量
if (result) //如果result=true
{
Console.WriteLine("该数字为质数"); //在控制台写入内容
break; //退出当前循环
}
else
{
Console.WriteLine("该数字不是质数"); //在控制台写入内容
}
}
}
}
public static bool IsPrime(int strnumber)
{
for (int i = 2; i < strnumber; i++) //把用户传过来的数和这个数之前除了1和自身以外的数进行整除取余
{
if (strnumber % i == 0) //如果取余结果为0
return false; //返回false
}
return true; //否则,返回true
}
public static int IsNumber(string strnumber)
{
while (true)
{
try //使用try语句
{
int number = Convert.ToInt32(strnumber); //尝试将字符串转换为int类型
return number; //只有转换成为才会执行本段代码,返回number
}
catch //出现错误,则会跳转到catch语句
{
Console.WriteLine("您输入的不是数字,请重新输入数字"); //有可能会出现bug的地方,通过提示来告知,躲过bug
strnumber = Console.ReadLine(); //读取控制台数据并赋值给strnumber变量
}
}
}