我正在尝试使用C#查找数字是否为素数.我写了代码.它应该工作,但由于某种原因它似乎没有.
这是我的代码(我尝试输入7,13等,说它们不是素数):
class Program
{
static void Main(string[] args)
{
long u = Console.Read();
primefinder(u);
Console.ReadLine();
}
private static void primefinder(long a)
{
long counter = 0;
for (long b = 1; b <= a; b++)
{
if ((a % b) == 0)
{
counter++;
}
}
if (counter == 2)
{
Console.WriteLine("Is prime!");
}
else
{
Console.WriteLine("Is not prime");
}
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
Console.Read从标准输入流中读取下一个字符,并返回其代码点.这与其整数值不同.例如,角色的代码点'7'是55.另外,Read只考虑一个字符; 因此,当您键入时13,它将仅返回代码点'1'.
而不是Read,您应该使用ReadLine,它将从标准输入读取整行字符(即,直到用户按下"Enter")并将它们作为字符串返回.然后,您可以使用其Parse方法将此字符串转换为long值.
long u = long.Parse(Console.ReadLine());
Run Code Online (Sandbox Code Playgroud)
如果您想在用户输入错误输入(例如字母而不是数字)时避免出现异常,则应使用TryParse:
string s = Console.ReadLine();
long u;
if (long.TryParse(s, out u))
primefinder(u);
else
Console.WriteLine("Your input was not a valid number!");
Run Code Online (Sandbox Code Playgroud)