0

この割り当てに対する私のタスクは、ユーザーからの無限の入力 (ctrl-d で終了) を取得し、入力された数値が素数の場合に応答を返すことです。これに対するひねりは、すべての数値 <= 数値入力の平方根に対して % 関数を使用する代わりに、数値入力をカバーする素数のリストを作成する必要があることです (数値入力が 6 の場合、リストは2、3、5、および 7 を含む)、リストを直線的に検索し、数値入力がそのリストにある場合は true を返します。また、クラス内にある必要があります。

これが私の Isprime 関数です。

bool isprime::Isprime(int N){
  int i,primenum,max=1;
  int prime[max];
  prime[0]=2;
  for(primenum=3;prime[max-1]<N;primenum++){
    for(i=2;i<primenum;i++){
      if(primenum%i!=0){
        max++;
        prime[max-1]=primenum;
      }
  }
  for(int j=0;j<max;j++){
    if(N==prime[j])
      return true;
  }
  return false;
}

プログラムを実行すると、望ましい出力を返す唯一の数値は 2 (最初にリストに入れた数値です。ここで何が間違っているのでしょうか? 事前にご意見をお寄せいただきありがとうございます。

編集 1: ユーザーが数値を入力しているときに、Isprime 関数が true を返した場合、単純な cout << N << " is a prime number" が出力されます。それが、望ましい出力とは私が意味したことです。

編集 2:いくつかの不注意なバグのために関数を編集した後、すべての入力整数が true を返します。

4

1 に答える 1