给定数字是否为素数,如果不是则输出其所有除数
Is a given number a prime or not, if not output all its divisors
我的代码的主要部分正在运行,唯一不起作用的是它所有除数的输出。如果它不是素数,我的结果应该是这样的:
输入 -> 4
输出 -> 假 1 2 4
Console.WriteLine("Type your number: ");
int n = Convert.ToInt32(Console.ReadLine());
int a = 0, i;
for (i = 1; i <= n; i++)
{
if (n % i == 0)
{
a++;
}
}
if (a == 2)
{
Console.WriteLine("true");
}
else
{
Console.WriteLine("false" + i);
}
Console.ReadLine();
这是一个可行的解决方案。您基本上必须将除数存储在某个地方或直接打印它们:
public static void Method(int n)
{
if (IsPrime(n))
{
Console.WriteLine($"{n} is a prime");
return;
}
var divisors = new List<int>();
for(var i = 1; i <= n; i++)
{
if (n % i == 0)
divisors.Add(i);
}
Console.WriteLine($"{n} isn't a prime");
Console.WriteLine($"The divisors are: {string.Join(", ", divisors)}");
}
public static bool IsPrime(int n)
{
for(var i = 2; i < n; i++)
{
if (n % i == 0)
return false;
}
return true;
}
通过简单的检查,有两种生成输出的方法。到目前为止,您 计算 个除数,但既 store 它们也不 write 它们到输出.你可以替换
if (n % i == 0)
{
a++;
}
来自
if (n % i == 0)
{
Console.WriteLine(i);
a++;
}
或将除数存储在
List<int>
之后生成输出。
要打印所有除数,您需要将它们收集到某种集合中——这里是整数列表。
此外,所有整数都可以被 1
整除,因此您不想从那里开始;你也不想在 n
结束,因为 n % n == 0
.
var divisors = new List<int>();
for (var i = 2; i < 2; i++)
{
if (n % i == 0)
{
divisors.Add(i);
}
}
if (divisors.Count == 0)
{
Console.WriteLine("true");
}
else
{
Console.WriteLine("false " + String.Join(" ", divisors));
}
我的代码的主要部分正在运行,唯一不起作用的是它所有除数的输出。如果它不是素数,我的结果应该是这样的: 输入 -> 4 输出 -> 假 1 2 4
Console.WriteLine("Type your number: ");
int n = Convert.ToInt32(Console.ReadLine());
int a = 0, i;
for (i = 1; i <= n; i++)
{
if (n % i == 0)
{
a++;
}
}
if (a == 2)
{
Console.WriteLine("true");
}
else
{
Console.WriteLine("false" + i);
}
Console.ReadLine();
这是一个可行的解决方案。您基本上必须将除数存储在某个地方或直接打印它们:
public static void Method(int n)
{
if (IsPrime(n))
{
Console.WriteLine($"{n} is a prime");
return;
}
var divisors = new List<int>();
for(var i = 1; i <= n; i++)
{
if (n % i == 0)
divisors.Add(i);
}
Console.WriteLine($"{n} isn't a prime");
Console.WriteLine($"The divisors are: {string.Join(", ", divisors)}");
}
public static bool IsPrime(int n)
{
for(var i = 2; i < n; i++)
{
if (n % i == 0)
return false;
}
return true;
}
通过简单的检查,有两种生成输出的方法。到目前为止,您 计算 个除数,但既 store 它们也不 write 它们到输出.你可以替换
if (n % i == 0)
{
a++;
}
来自
if (n % i == 0)
{
Console.WriteLine(i);
a++;
}
或将除数存储在
List<int>
之后生成输出。
要打印所有除数,您需要将它们收集到某种集合中——这里是整数列表。
此外,所有整数都可以被 1
整除,因此您不想从那里开始;你也不想在 n
结束,因为 n % n == 0
.
var divisors = new List<int>();
for (var i = 2; i < 2; i++)
{
if (n % i == 0)
{
divisors.Add(i);
}
}
if (divisors.Count == 0)
{
Console.WriteLine("true");
}
else
{
Console.WriteLine("false " + String.Join(" ", divisors));
}