ここでの目標は、1 から 100 までのすべての素数を見つけて出力するプログラムを作成することでした。私は物事を複雑にし、非効率的なコードを作成する傾向があることに気付きました。ここでもそれを行ったと確信しています。最初のコードは私のもので、コメント タグの間に入れたものはすべて、解決策として本に記載されているコードです。
// Find all prime numbers between 1 and 100
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int counter; // loop counter
int count_two; // counter for second loop
int val; // equals the number of count, used in division to check for primes
bool check;
check = true;
for(counter = 1; counter <= 100; counter++){
val = counter;
for(count_two = 2; count_two <= 9; count_two++){
if((val % count_two) == !(check)){
cout << val << " is a prime number.\n";
}
}
}
return 0;
}
// program didn't work properly because of needless complication; all that needs to be checked for is whether a number is divisible by two
/*
*********correct code***********
#include <iostream>
using namespace std;
int main()
{
int i, j;
bool isprime;
for(i=1; i < 100; i++) {
isprime = true;
// see if the number is evenly divisible
for(j=2; j <= i/2; j++)
// if it is, then it is not prime
if((i%j) == 0) isprime = false;
if(isprime) cout << i << " is prime.\n";
}
return 0;
}
********************************
*/
私が収集できることから、私はここでかなり正しい道を歩んでいました。二重ループと変数の使いすぎで物事を複雑にしたと思います。おそらく、プログラムが正しく動作しない可能性があります。必要に応じて出力を投稿できますが、それは確かに間違っています。
私の質問は基本的にこれです:正確にどこで間違ったのですか?自分でコードを修正したいので、誰かがこれをやり直す必要はありませんが、しばらくこれを見てきましたが、なぜ私のコードが機能しないのかよくわかりません。また、私はこれが初めてなので、構文/読みやすさに関する入力も役に立ちます。前もって感謝します。