この割り当てに対する私のタスクは、ユーザーからの無限の入力 (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 を返します。