2015-08-24 2 views
-1

Я пытаюсь сделать это:C++ цикла каждый не простое

  1. Пользователь выбирает один номер
  2. Программа вызывает функцию isaPrime() таким образом мы видим, если число является простым или нет.

Я хотел сделать цикл, поэтому каждый раз, когда число не является простым, пользователь должен выбрать новое значение.

Вот код:

#include <iostream> 
#include <math.h> 

using namespace std; 

bool isPrime (int num) 
{ 
    if (num <=1) 
     return false; 
    else if (num == 2) 
     return true; 
    else if (num % 2 == 0) 
     return false; 
    else 
    { 
     bool prime = true; 
     int divisor = 3; 
     double num_d = static_cast<double>(num); 
     int upperLimit = static_cast<int>(sqrt(num_d) +1); 

     while (divisor <= upperLimit) 
     { 
      if (num % divisor == 0) 
       prime = false; 
      divisor +=2; 
     } 
     return prime; 
    } 
} 

int main() 
{ 
    int p; 
    do { 
     cout << "p : "; 
     cin >> p; 
     isPrime(p); 
    } while (isPrime(p)); 

} 
+0

Это на самом деле не смешно ... Если бы я пришел сюда это означает, что я не мог сделать это сам. Если вы просто здесь, для бесполезной почты вроде этого, просто убирайтесь оттуда. –

+1

http://stackoverflow.com/help/mcve Вопрос не в тему! Что вы теперь делаете? –

+0

Я сделал все это ... –

ответ

2

Это должно обрабатывать ваш пользователь цикла ввода/вывода. Вам просто нужно заменить функцию isPrime своей собственной реализацией.

Листинг


#include <iostream> 
#include <iomanip> 
#define isPrime(x) (1) 

int main(void) 
{ 
    using namespace std; 

    const int maxchar = 5; 
    string nationname; 
    int input; 
    int running = 1; 

    while (running) 
    { 
     cout << "Enter a number:"; 
     cin >> input; 
     if (isPrime(input)) 
     { 
      // Do something 
      running = 0; 
     } 
     else 
     { 
      cout << "Not a prime number. Please try again!" << endl; 
     } 
    } 

    return 0; 
} 
+0

СПАСИБО! Я искал его, действительно, снова спасибо! –

0

Если вы удалите сделать цикл ваш код будет работать. Это связано с тем, что ваш цикл будет работать до тех пор, пока isprime вернет true и перестанет работать, когда isprime возвращает false.

Кроме того, если вы хотите, чтобы отобразить или нет число является простым, вы должны использовать cout << isPrime(p);

, таким образом, ваш главный несильно должен выглядеть

int main() 
{ 
    int p; 
    cout << "p : "; 
    cin >> p; 
    cout << isPrime(p); 
} 
+1

Это не то, что я хотел, ответил Соберт. Но спасибо за вклад! –

0

По вашему вопросу: Когда пользователь выбирает нон прайм число циклов итерации. То, что вы делаете обратное так просто заменить

else{ 
bool prime =false //replaced to true 
//your code 
while (divisor <= upperLimit) 
    { 
     if (num % divisor == 0) 
      { 
       prime = true; //replaced to true 
       break; 
      } 
     divisor +=2; 
    } 
    return prime; 
Смежные вопросы