#c
#c
Вопрос:
Я изучал C в течение нескольких недель, однако я застрял, у меня есть функция isPrime(), отлично работает, чтобы показать, является ли число простым или нет, мне нужно отобразить все простые числа, которые меньше 200. Но это не работает см. Строку, отмеченную комментарием
#include <iostream>
using namespace std;
// Function Prototypes
bool isPrime(int);
int main()
{
int Num;
cout << "This program let you know if the number entered is a "
<< "prime number.nEnter a number: ";
cin >> Num;
cout << "The number " << Num;
if (isPrime(Num))
{
cout << " is a Prime number." << endl;
}
else
cout << " is not a Prime number." << endl;
return 0;
}
//isPrime
bool isPrime(int Num)
{
if (Num > 1)
{
for (int i = 2; i <= Num; i)
{
if (Num % i == 0)
{
if(Num == i)
return true;
else if
for(int n = 2; n < 200; n ) { // HERE
// isPrime will be true for prime numbers
isPrime = isPrimeNumber(n);
if(isPrime == true)
cout<<n<<" ";
}
return 0;
else
return false;
}
}
}
return false;
}
Комментарии:
1. Неясно, что вы пытаетесь сделать. 1. Если цель
isPrime(n)
состоит в том, чтобы проверить, является ли n простым, тогда вам следует написать отдельную функцию для перечисления всех простых чисел меньше определенного числа. 2. Что такоеisPrimeNumber(n)
? Эта функция здесь не определена.2. Ваша попытка присвоить значение имени функции напоминает Паскаль. Если это то, откуда вы пришли, забудьте об этой практике при использовании C .
3. Что касается качества самого вопроса, «это не работает» — бесполезное описание проблемы. Представьте, что следующий человек с вашей проблемой ищет SO для «это не работает», чтобы узнать, задавал ли кто-то (вы) этот вопрос уже. Подумайте о том, сколько не относящихся к делу вопросов придется решать этому человеку, поскольку каждый вопрос об отладке сводится к «это не работает». Попробуйте описать, что не работает. Что вы заметили? Каковы симптомы? Если это ошибка компиляции, что это за сообщение об ошибке (скопированное в виде текста в ваш вопрос)?
Ответ №1:
Вы добавили цикл в неправильном месте. Эта функция предназначена только для проверки определенного числа. Либо вам нужно будет создать другую функцию для печати всех простых чисел, которые меньше 200, либо вы можете напрямую добавить цикл в функцию main(), как я это сделал.
#include <iostream>
using namespace std;
// Function Prototypes
bool isPrime(int);
int main()
{
int Num;
cout << "This program let you know if the number entered is a "
<< "prime number.nEnter a number: ";
cin >> Num;
cout << "The number " << Num;
// Check numbers here
for(int n = 2; n < 200; n ) {
if (isPrime(n)){
cout << n << " is a Prime number." << endl;
}
}
return 0;
}
//isPrime - This is your original isPrime Code
bool isPrime(int Num)
{
if (Num > 1)
{
for (int i = 2; i <= Num; i)
{
if (Num % i == 0)
{
if(Num == i)
return true;
else
return false;
}
}
}
return false;
}
Комментарии:
1. Ответы только для кода редко что-либо объясняют. Хороший ответ должен начинаться с текста, объясняющего ответ. Код может следовать за объяснением. (Это очень похоже на то, как хороший вопрос должен начинаться с текста, излагающего вопрос, за которым потенциально следует код, иллюстрирующий вопрос.)
2. @JaMiT Я добавил комментарии в код.. Я думаю, что OP уже поймет это, поскольку изменений не так много, но если вы так скажете.. Я буду.
3. @bhpcv Я действительно хочу поблагодарить вас за помощь мне, я понял, что вы сказали, и ваш код, проблема была в цикле, не слушайте, что здесь говорят все ненавистники. К сожалению, у многих людей фиксированное мышление, они всегда будут голосовать за отказ от resean. Еще раз спасибо, что помогло мне понять это!
4. @JohnJoryJr Я нахожу ваш комментарий оскорбительным, у меня не только была причина проголосовать против этого ответа, я указал эту причину в комментарии.
5. @bhpcv Изменение полезно, спасибо. Имейте в виду, что вы отвечаете не только за OP, но и за следующего пользователя с тем же вопросом, того, кто с меньшей вероятностью заметит незначительное изменение в коде, когда оно явно не вызывается как «это то, что изменилось».