我是C#的新手,我正在尝试学习新的概念,所以我做了一个素数检查器。它可能没那么高效,但我很高兴它有效。但是,每当我输入数字4时,它都不起作用。在所有其他数字上,但它在4上没有。这是我的代码:
float prime = Convert.ToSingle(Console.ReadLine());
float divisor = prime - 1;
float checker = prime / divisor;
do
{
Console.WriteLine("checker = " + checker);
checker = prime / divisor;
--divisor;
} while (checker % 1 != 0 && divisor >= 0);
if (divisor < 1)
{
Console.WriteLine("{0} is a prime number.", prime);
}
if (checker % 1 == 0 && divisor > 1)
{
Console.WriteLine("{0} is not a prime number.", prime);
}
答案 0 :(得分:0)
你的逻辑是错误的:
checker = prime / divisor;
checker = 4/2 =&gt; 2
while (checker % 1 != 0 && divisor >= 0)
2%1 = 0 - 退出循环 您还有2个If条件(为什么不是&amp; else)。 Second If条件与循环结束条件不匹配。
这是我的逻辑:
float input = Convert.ToSingle(Console.ReadLine());
float factor1 = 2;
float factor2 = 0;
bool isPrime = true;
for(; factor1 < input; factor1++)
{
factor2 = input / (float)factor1;
if((int)factor2 == factor2)
{
isPrime = false;
break;
}
}
if(isPrime)
{
Console.WriteLine($"{input} is prime.");
}
else
{
Console.WriteLine($"{input} is not prime. {factor1} * {factor2} = {input}");
}
答案 1 :(得分:0)
您的if
语句条件均未满足4.将第二个if
语句更改为else
,以便在第一个语句未执行时{{1}的逻辑语句总是执行。
else