0 / 0 / 0
Регистрация: 25.05.2015
Сообщений: 5
1

Как работает эта функция?

22.05.2016, 22:55. Показов 897. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как работает эта функция?Я знаю, что она ищет простые числа, но каким образом,я не понимаю.Например зачем тут Num/2 и т.д?
C++
1
2
3
4
5
bool simple(unsigned num) {
    for (unsigned n = 2; n <= num / 2; n++)
    if (!(num % n)) return false;
    return true;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2016, 22:55
Ответы с готовыми решениями:

Как работает эта функция?
Вот код программы крестики-нолики. Пожалуйста, объясните на пальцах как работает ф-ция &quot;botMove&quot;....

Не понимаю как работает эта функция
Что означают аргументы &amp; и * в этой функции ? template &lt;typename T&gt; inline T* const&amp; max(T*...

Не могли бы объяснить, как работает эта функция для удаления цифр?
char* delDig(char *S) { int i,j; i=0; for (j=0; j&lt;strlen(S); j++) if ((S &lt;...

Как работает эта часть кода?
element *el, *n_el; int i; n_el = (element *)malloc(sizeof(element)); printf(&quot;Vvedite FIO:...

9
4816 / 2276 / 287
Регистрация: 01.03.2013
Сообщений: 5,943
Записей в блоге: 27
22.05.2016, 23:25 2
По-идиотски она работает. Во-первых, вы правильно заметили - зачем проверять до num / 2? Во-вторых, мы начинаем с проверки деления на 2, но если не делится - все равно потом героически проверяем делимость на все остальные четные числа. В общем, типичный овнокот неосилятора.
1
Комп_Оратор)
Эксперт по математике/физике
8935 / 4690 / 628
Регистрация: 04.12.2011
Сообщений: 13,960
Записей в блоге: 16
22.05.2016, 23:27 3
tortyk15, если число не имеет делителей (простое) она возвращает true, а иначе false.
_Ivana, при попытке плюсануть движок пишет:
Fatal error: Call to undefined function is_empty() in /home/cyberforum/data/www/cyberforum.ru/post_thanks.php on line 58
1
0 / 0 / 0
Регистрация: 25.05.2015
Сообщений: 5
22.05.2016, 23:31  [ТС] 4
Пожалуйста, помогите создать более понятный аналог этой функции. Она совершает правильное действие только через 5-ую точку. Вот моя программа , опеределяющая и записывающая последовательно простые числа:
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
#include <iostream>
#include <cstdlib>
#include <vector>
using namespace std;
bool simple(unsigned num) {
    for (unsigned n = 2; n <= num / 2; n++)
    if (!(num % n)) return false;
    return true;
}
int main(int argc, char** argv)
{
    setlocale(LC_ALL, "russian");
    vector<int> myVector(27);
    for(int ix=2;ix<=25;ix++)
    {
        myVector[ix] = ix;
        if(simple(ix)==true)
        {
        cout << myVector[ix] << " ";
        }
    }
    system("PAUSE >> void");
    return 0;
}
0
4816 / 2276 / 287
Регистрация: 01.03.2013
Сообщений: 5,943
Записей в блоге: 27
22.05.2016, 23:42 5
IGPIGP, да, я вам тоже плюсануть не могу - та же ошибка
tortyk15, вы все равно заполняете вектор простых начиная с первого. Не через 5 точку будет, если ваша функция проверки на простоту будет бежать по элементам этого вектора, пока квадрат элемента не больше проверяемого числа.
0
0 / 0 / 0
Регистрация: 25.05.2015
Сообщений: 5
22.05.2016, 23:52  [ТС] 6
Должно получиться так? Извините за глубый вопрос(
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
#include <iostream>
#include <cstdlib>
#include <vector>
using namespace std;
int sqr(int s){return s*s;}
bool simple(unsigned num) {
    int n = 2;
    while(n !> sqr(num)){
    if (!(num % n)) return false;
    return true;}
}
int main(int argc, char** argv)
{
    setlocale(LC_ALL, "russian");
    vector<int> myVector(27);
    for(int ix=2;ix<=25;ix++)
    {
        myVector[ix] = ix;
        if(simple(ix)==true)
        {
        cout << myVector[ix] << " ";
        }
    }
    system("PAUSE >> void");
    return 0;
0
4816 / 2276 / 287
Регистрация: 01.03.2013
Сообщений: 5,943
Записей в блоге: 27
22.05.2016, 23:53 7
Нет, не так.
0
0 / 0 / 0
Регистрация: 25.05.2015
Сообщений: 5
23.05.2016, 00:00  [ТС] 8
?
C++
1
2
3
4
5
6
7
8
bool Prostoe(const int number)
{
    for (int i=2; i <= sqrtf(number); i++)
        if (number % i == 0)
            return false;
 
    return true;
}
0
4816 / 2276 / 287
Регистрация: 01.03.2013
Сообщений: 5,943
Записей в блоге: 27
23.05.2016, 00:12 9
И нафига вызывать флоатовскую функцию? А про остальные упоминаемые ужасы вы не прочитали видимо.
0
Комп_Оратор)
Эксперт по математике/физике
8935 / 4690 / 628
Регистрация: 04.12.2011
Сообщений: 13,960
Записей в блоге: 16
23.05.2016, 01:19 10
Цитата Сообщение от _Ivana Посмотреть сообщение
я вам тоже плюсануть не могу - та же ошибка
Заработало.

Не по теме:

Глядя на происходящее не пойму сути. Выглядит всё как просьба "помочь" на пятёрку написать.

0
23.05.2016, 01:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2016, 01:19
Помогаю со студенческими работами здесь

Объясните как работает эта программа
#include &lt;stdio.h&gt; #include &lt;iostream&gt; enum { OUT, IN }; int main () { int c, nw, state;...

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

Объясните пожалуйста как работает эта сортировка
Я не совсем понимаю что происходит с вектором #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include...

Как работает эта программа? (клиент-сервер)
клиент: #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;winsock2.h&gt; #include &lt;windows.h&gt;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru