Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
ShuricFC
0 / 0 / 0
Регистрация: 08.09.2016
Сообщений: 73
1

Вывести ближайшее к заданному числу N простое число; если таких числа два, то вывести меньшее

12.09.2016, 19:24. Просмотров 1619. Ответов 5
Метки нет (Все метки)

Помогите пожалуйста решить задачу!
Дано одно целое число N. Вывести ближайшее к заданному числу N простое число. Если таких два, то вывести меньшее.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2016, 19:24
Ответы с готовыми решениями:

Найти элемент массива ближайший к заданному числу. Если таких чисел несколько, вывести наименьшее из них
Если с основным условием я справился, то с уточнением не могу. Вышло это: #include...

Найти ближайшее к введенному числу простое число
Вощем модульная неделя , получили задание , вощем у меня надо сделать так , чтобы Вводиш некое...

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

Даны два действительных числа. Вывести первое число, если оно больше второго, и оба числа, если это не так.
Даны два действительных числа. Вывести первое число, если оно больше второго, и оба числа, если...

Необходимо вывести строку prime, если число простое, или composite, если число составное
Уважаемые программисты, проверьте, пожалуйста, решение задачи Проверьте, является ли число...

5
Байт
Эксперт C
21303 / 13469 / 2838
Регистрация: 24.12.2010
Сообщений: 28,572
12.09.2016, 21:19 2
ShuricFC, Определять простоту числа умеешь?
0
ShuricFC
0 / 0 / 0
Регистрация: 08.09.2016
Сообщений: 73
12.09.2016, 21:27  [ТС] 3
Да. Проблема с выводом ближайшего
0
Байт
Эксперт C
21303 / 13469 / 2838
Регистрация: 24.12.2010
Сообщений: 28,572
12.09.2016, 21:36 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
if (isPrim(N)) cout << N;
else {
 for(i=1; ;i++) {
  if (isPrim(N+i)) {
    if (N-i >= 2 && isPrim(N-i))
      cout << N-i;
    else
      cout << N+i;
    break;
   } 
  }
 }
}
Как-то так
0
Mr.X
Эксперт С++
3192 / 1719 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
13.09.2016, 09:02 5
Лучший ответ Сообщение было отмечено ShuricFC как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//Дано одно целое число N. Вывести ближайшее к заданному числу N
//простое число. Если таких два, то вывести меньшее.
///////////////////////////////////////////////////////////////////////////////
#include <cstdlib>
#include <ctime>
#include <iostream>
///////////////////////////////////////////////////////////////////////////////
bool    is_prime( int   n )
{
    bool    bool_res    =       n   >   1
 
                            &&  (
                                        n           ==  2
                                    ||  n           ==  3
 
                                    ||  n   %   6   ==  1
                                    ||  n   %   6   ==  5
                                );
 
    if( !bool_res )
    {
        return  bool_res;
    }
 
    for( int  d{2}; d * d <= n; ++d  )
    {
        bool_res    =   n   %   d;
 
        if( !bool_res )
        {
            break;
        }
    }//for
 
    return  bool_res;
}
///////////////////////////////////////////////////////////////////////////////
int     nearest_prime( int  n )
{
    for( int  d{}; ; ++d )
    {
        for( auto  k    :   {-1, 1} )
        {
            int     res     =   n   +   d * k;
 
            if  (
                    is_prime( res )
                )
            {
                return  res;
            }//if
        }//for
    }//for
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    srand(unsigned(time(0)));
 
    for(;;)
    {
        int     n   =   rand()  %   100;
 
        std::cout   <<  "n\t\t= "               <<  n                   <<  std::endl
                    <<  "nearest_prime\t= "     <<  nearest_prime(n)    <<  std::endl;
 
        system("pause");
    }//for
}
0
ShuricFC
0 / 0 / 0
Регистрация: 08.09.2016
Сообщений: 73
13.09.2016, 09:05  [ТС] 6
Всем большое спасибо!
0
13.09.2016, 09:05
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2016, 09:05

Пользователь вводит два числа. Определить, делится одно число на другое без остатка. Если нет, предложить ближайшее
Пользователь вводит два числа. Определить, делится одно число на другое без остатка. Если нет,...

Вывести простое число, ближайшее к заданному N
Здравствуйте, не могли бы помочь решить пару задач на паскале с помощью процедур. Вот условия: 1....

Найти ближайшее простое число к заданному с клавиатуры числу P
Найти ближайшее простое число к заданному с клавиатуры числу P.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.