Deric Jose Ответов: 3

Как отобразить самое большое простое число в C++?


Я не знаю, как отобразить самое большое простое число, может ли кто-нибудь мне помочь? Я смог показать простые числа, но мне нужно показать только самые большие.

он должен был бы это сделать, но я застрял уже несколько недель :

Программа, которая просит пользователя ввести серию чисел (используйте 0, чтобы остановить серию. После того, как все числа были введены, программа должна отобразить наибольшее простое число ряда. Проверка данных: числа должны быть больше 0.

Что я уже пробовал:

#include <iostream>
#include<cfloat>
using namespace std;
int main() {
    int num,i,flag,n;
    cin>>n;
    cout<<"The Prime Numbers Are: ";
    for(num=1; num<=n; num++){
        flag=0;
        for(i=2;i<=num/2;i++){
            if(num%i==0){
                flag=1;
                break;
            }
        }
        if(flag==0 && num!=1)
            cout<<num<<endl;
    }
return 0;
}

Patrice T

Где ты застрял ?

Richard Deeming

Ваше название несколько вводит в заблуждение - нет такой вещи, как "самое большое простое число". Вы ищете "самое большое простое число в пределах определенного диапазона". :)

3 Ответов

Рейтинг:
2

CPallini

Как предположил Грифф, вы можете вычислить наибольшее простое число на лету, не записывая все вводимые пользователем данные. Для начала поставьте тест на примитивность на отдельную функцию, например

bool is_prime(int n)
{
  for (int i=2; i<n; ++i)
    if ( n % i == 0)
      return false;

  return true;
}


Затем
  • Присвоить произвольное недопустимое значение max_prime (например, 0).

  • Реализуйте цикл пользовательского ввода: если число, которое вводит пользователь, больше, чем max_prime и это прайм, а затем обновление max_prime ценность.

  • На завершения цикла проверяем, если max_prime действителен и, возможно, сообщит об этом.


Рейтинг:
1

KarstenK

Сначала вы должны разработать какую-то концепцию, например, как написал OriginalGriff. Лучше всего сохранить входные данные, но в исходном порядке в векторе или массиве. Далее вам нужно закодировать некоторую функцию, которая проверяет наличие номера праймера. Результат простых чисел я бы сохранил отсортированным.

Совет: сделайте цикл while для ввода с критерием разрыва 0.


Рейтинг:
0

OriginalGriff

Начните с того, что попросите пользователя ввести цифры и сохранить их. Сортировка введенных пользователем чисел в порядке убывания - затем обрабатывайте каждое по очереди, начиная с самого большого.
Проверьте каждое число по очереди и выясните, является ли оно простым. если это так, распечатайте его и выйдите. если нет, переходите к следующему.

Альтернативой является сохранение "самого большого" значения, и когда пользователь вводит каждое значение, Проверьте, больше ли оно. Если это так, проверьте, если это Прайм - если это не игнорировать его. Если это так, установите значение largest на новое значение и перейдите к следующему значению. когда пользователь вводит 0, выведите самый большой или сообщение о том, что "ни один из них не был простым".

Но это твое домашнее задание, так что я не дам тебе никакого кода!