以下は素数の計算です。ループをよりよく理解するために、それを分解しようとしていました。また、この関数を微調整して、この方法ではなく、数値をその平方根と比較して素数を見つけたいと思います。
(int mainの前に適切な宣言が行われると想定します)
//数値が素数かどうかを判断します
bool isPrime (long n)
{
int a;
if (n == 1)
{
return false;
}
for (a = 2; a <= (n / 2); a++)
{
if ((n % a) == 0)
{
return false;
}
}
return true;
}
ただし、このループを観察すると、最初にこの関数を正しく観察しているかどうかを確認するための質問があります。私が見ると、それはカウンターのように見えint a;
、0と1は素数ではないので、2から始まります。nは正式な変数である必要があります。2で割ったときにそれ自体以下のすべての数値について、ゼロより大きい余りがある場合はブール値に対してtrueを返すと記載されています。同時に、数値が2で均等に除算された場合(つまり余りがない場合)、素数とは見なされません(ブール値はfalseを返します)。それは正しいと思いますか?そうでない場合は、どこで間違った方向に曲がったか教えてください。正しければ、プログラムの後半に進みます。
ここで、メインprimeCount;
で制限されてprimeCount (2, 50000);
いますが、最初の関数はここにフィードします:
//isPrime関数を使用して素数をカウントして整理します
long primeCount (long x, long y)
{
bool prime;
int b;
int c = 1000;
int counter = 0;
int totalSum = 0;
for (b = 1; b <= y; b++)
{
prime = isPrime (b);
if (prime == true)
{
counter++;
}
if (b == c)
{
cout << setw(10) << left << (b - 999) << setw(10) << left << b << setw(12) << counter << endl;
cout << fixed << showpoint << setprecision(2) << endl;
totalSum = totalSum + counter;
counter = 0;
c = c + 1000;
}
}
ここで、xとyは正式な変数であると思いますが、xが何を表すのかわかりません。それは表していint c;
ますか?その関数のforループは私を完全に混乱させました。わかりません。その上に当てることができるどんな光でもありがたいです。
平方根の照会に関しては、素数を取得するために3つのネストされたforループを使用する必要がありますか?
for (a > m => b)
for (a==m => b==m)
for (a < m => b>m)
この方法で素数を見つけることは、ここに示されている方法よりも多かれ少なかれ複雑でしょうか?私はこれが取り組むべきことがたくさんあることを知っています。別々の投稿に分割することを提案された場合は、これを編集して後半を別の投稿に投稿します。助けてくれてありがとう!このようなものから頭と尻尾を作ろうとしている新入生のC++プログラマー:)