-2

与えられた正の整数 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;
        }

    }

これはうまくいかないようです。何か提案はありますか?

4

6 に答える 6

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);
于 2012-11-02T02:52:23.380 に答える
1

a。あなたは何をすることを期待number % numberしていますか?

b。isPrimeチェックは、ループを通過するたびに「リセット」されます。このようなものが必要です:

bool isprime = true;
for(int i = 2; i < number; i++) {
    // if number is divisible by i then
    //    isprime = false;
    //    break
}
// display result.
于 2012-11-02T02:50:59.740 に答える
0

問題は次のとおりです: 任意の数は 1 で割られるため、for は 2 から開始する必要があります。 number % number == 0 - これは常に true です。

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);

私はこれをテストしていないことに注意してください...ここに書いただけです。しかし、あなたは要点を理解する必要があります。

于 2012-11-02T02:55:31.393 に答える
0

LINQ を使用したやや深刻な解決策 (少なくとも範囲を狭くする必要があります):

var isPrime = !Enumerable.Range(2, number/2).Where(i => number % i == 0).Any();
于 2012-11-02T04:45:32.890 に答える
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();
    }
}

ありがとう!!!

于 2015-05-21T10:17:43.953 に答える
-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;
        }
    }
于 2012-11-02T02:52:36.157 に答える