我有这个任务:编写一个表达式,检查给定的正整数n(n≤100)是否为素数。例如。 37是素数。
int number = int.Parse(Console.ReadLine());
for (int i = 1; i < 100; i++)
{
bool isPrime = (number % number == 0 && number % i == 0);
if (isPrime)
{
Console.WriteLine("Number {0} is not prime", number);
}
else
{
Console.WriteLine("Number {0} is prime", number);
break;
}
}
这似乎不起作用。有什么建议吗?
答案 0 :(得分:2)
int number = int.Parse(Console.ReadLine());
bool prime = true;
// we only have to count up to and including the square root of a number
int upper = (int)Math.Sqrt(number);
for (int i = 2; i <= upper; i++) {
if ((number % i) == 0) {
prime = false;
break;
}
}
Console.WriteLine("Number {0} is "+ (prime ? "prime" : "not prime"), number);
答案 1 :(得分:1)
一个。你期待number % number
做什么?
湾每次循环时,isPrime检查都会“重置”。需要更像这样的东西:
bool isprime = true;
for(int i = 2; i < number; i++) {
// if number is divisible by i then
// isprime = false;
// break
}
// display result.
答案 2 :(得分:0)
问题是: for应该从2开始,因为任何数字都会被1击败。 number%number == 0 - 这一直是真的 如果他吃了所有的步骤那么这个数字就是素数
else
{
Console.WriteLine("Number {0} is prime", number);
break;
}
不要在那里。
代码应该是这样的:
int number = int.Parse(Console.ReadLine());
if (number == 1)
{ Console.WriteLine("Number 1 is prime");return;}
for (int i = 2; i < number / 2 + 1; i++)
{
bool isPrime = (number % i == 0);
if (isPrime)
{
Console.WriteLine("Number {0} is not prime", number);
return;
}
}
Console.WriteLine("Number {0} is prime", number);
请注意我没有测试过这个...只是在这里写的。但你应该明白这一点。
答案 3 :(得分:0)
使用LINQ的半严重可能解决方案(至少需要更小的范围):
var isPrime = !Enumerable.Range(2, number/2).Where(i => number % i == 0).Any();
答案 4 :(得分:0)
程序检查给定的数字是否为素数。
素数是一个只能除以1的数字
class Program
{
bool CheckIsPrimeNumber(int primeNum)
{
bool isPrime = false;
for (int i = 2; i <= primeNum / 2; i++)
{
if (primeNum % i == 0)
{
return isPrime;
}
}
return !isPrime;
}
public static void Main(string[] args)
{
Program obj = new Program();
Console.Write("Enter the number to check prime : ");
int mPrimeNum = int.Parse(Console.ReadLine());
if (obj.CheckIsPrimeNumber(mPrimeNum) == true)
{
Console.WriteLine("\nThe " + mPrimeNum + " is a Prime Number");
}
else
{
Console.WriteLine("\nThe " + mPrimeNum + " is Not a Prime Number");
}
Console.ReadKey();
}
}
感谢!!!
答案 5 :(得分:-1)
这是给你的:
void prime_num(long num)
{
bool isPrime = true;
for (int i = 0; i <= num; i++)
{
for (int j = 2; j <= num; j++)
{
if (i != j && i % j == 0)
{
isPrime = false;
break;
}
}
if (isPrime)
{
Console.WriteLine ( "Prime:" + i );
}
isPrime = true;
}
}