c#程序,用于查找数字是否为素数

时间:2012-11-02 02:46:24

标签: c# primes

我有这个任务:编写一个表达式,检查给定的正整数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;
        }

    }

这似乎不起作用。有什么建议吗?

6 个答案:

答案 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;
        }
    }