2

これが私の課題です。素数とは、1 とそれ自体でのみ割り切れる 1 より大きい数です。この割り当てでは、2 から n (n はユーザーが指定した数) までのどの数が素数であるかがわかります。

ユーザーに 2 より大きい数値 n を尋ねます。2 より大きい数値が提供されるまで、数値を尋ね続けます。ユーザーが数字のみを入力すると仮定します (つまり、ユーザーがテキストを入力するかどうかを確認する必要はありません)。

ループを使用して、2 から n までの変数 i を反復処理します。反復ごとに、2 から i までのすべての数値をチェックして、その数値が素数かどうかを判断します。素数の場合は、i と「Prime」という単語を出力します。

モジュラス演算子 % を使用して、数値が素数かどうかを判断します

これが私がこれまでに持っているものです。うまくいきません。そして、私はその理由を知りません。助けてください、基本的なプログラミングを選択科目として取っているビジネス学生です。

#include <iostream>

using namespace std;

int main()
{
  int n;
  int i;
  int x;

  while (n<=2)
  {
    cout << "Enter a number greater then 2: \n";
    cin >> n;

    for (x=n; x>=2; x--)
    {
      bool prime = false;
      for (i=2; i<x; i++)
      { 
        if (x%i==0)
        {
          prime = true;
        }
      }
      if (prime==false)
      {
        cout << x << " Prime.\n";
      }
    }
  }
  return 0;
}
4

5 に答える 5

0

私はあなたのコードを実際には使用しませんでした。しかし、私はあなたのために新しい方法を書きました。より管理しやすくするために、常にコードをメソッドに分割することをお勧めします。これをメインメソッドで呼び出すことができます

bool checkPrime(int number)
{   // input:   num an integer > 1
    // Returns: true if num is prime
    //          false otherwise.

    int i;

    for (i=2; i<number; i++)
    {
        if (number % i == 0)
        {
            return false;
        }
    }

    return true;    
}

そして、メインでこのメソッドを呼び出す方法は次のとおりです。

int main() {

int number;

cout << "Enter an integer (>1): ";
cin >> number;

if (checkPrime(number))
{
    cout << number << " is prime." << endl;
}
else
{
    cout << number << " is not prime." << endl;
}

// I think this is more convention than anything.
return 0;

}

于 2013-10-15T07:05:05.470 に答える