Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/79: Рейтинг темы: голосов - 79, средняя оценка - 4.59
139 / 60 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1
1

Функция для поиска простых чисел

05.06.2012, 13:46. Показов 14334. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
не могу сделать функции для поиска простых чисел,
вот код функции
C++
1
2
3
4
5
6
7
8
int prost(int x)
{
  if (x/2)
   return true;
   else 
      return false;
 
}
но он работает не правильно ? что надо исправить
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2012, 13:46
Ответы с готовыми решениями:

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

Функция для простых чисел
Найти все трехзначные простые числа, определив функцию, позволяющую распознавать простые числа.

Программа для поиска пар взаимно-простых натуральных чисел на определенном промежутке.
Как такое организовать? Тоесть вводишь число 5 потом 10 и программа должна найти все пары чисел у...

Функция для удаления из массива простых чисел
Написать функцию которая удаляет все простые числа из массива X.И вывести массив без простых чисел.

17
51 / 51 / 20
Регистрация: 28.05.2012
Сообщений: 161
05.06.2012, 13:59 2
ерунда там потому что. Простое число делится только на 1 и на само себя. а у вас в проверке просто х/2. Проверка должна быть типа
if ((x%2==0)||(x%3==0)||(x%5==0)||(x%7==0)). Ну и естественно исключить числа 3 5 7
0
139 / 60 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1
05.06.2012, 14:13  [ТС] 3
Цитата Сообщение от Alt_Shift Посмотреть сообщение
ерунда там потому что. Простое число делится только на 1 и на само себя. а у вас в проверке просто х/2. Проверка должна быть типа
if ((x%2==0)||(x%3==0)||(x%5==0)||(x%7==0)). Ну и естественно исключить числа 3 5 7
мне надо проверить числа от 1 до 100, это что каждое писать ?
0
320 / 270 / 128
Регистрация: 24.05.2012
Сообщений: 629
05.06.2012, 14:16 4
C++
1
2
3
4
5
6
7
8
#include <cmath>
 
bool IsSimple(unsigned x) {
    for (unsigned i = sqrt(x); i > 1; i--)
        if (!(x % i))
            return false;
    return true;
}
1
139 / 60 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1
05.06.2012, 14:55  [ТС] 5
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
#include <cmath>
 
bool IsSimple(unsigned x) {
    for (unsigned i = sqrt(x); i > 1; i--)
        if (!(x % i))
            return false;
    return true;
}
ошибки при компиляции
C:\Users\111\Desktop\Çàêàç2.cpp In function `bool prost(int)':
28 C:\Users\111\Desktop\Çàêàç2.cpp new declaration `bool prost(int)'
6 C:\Users\111\Desktop\Çàêàç2.cpp ambiguates old declaration `int prost(int)'
C:\Users\111\Desktop\Çàêàç2.cpp In function `bool prost(int)':
29 C:\Users\111\Desktop\Çàêàç2.cpp [Warning] converting to `int' from `double'
0
320 / 270 / 128
Регистрация: 24.05.2012
Сообщений: 629
05.06.2012, 16:23 6
Очевидно, Вы не удалили свою функцию.
0
139 / 60 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1
05.06.2012, 18:56  [ТС] 7
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
Очевидно, Вы не удалили свою функцию.
удалил, вот код
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
#include <vector>
#include <iostream>
#include <algorithm>
#include <math.h>
using namespace std;
int prost(int);
int main()
{
    vector <int> v;
    int temp;
    bool x;
    while(cin >> temp)
    {
      
      x = prost(temp);
      if(x)
       v.push_back(temp);
       }
       sort(v.begin(), v.end());
       for (int i=0; i<v.size(); i++)
       cout << "v[" << i << "]= " << v[i] << endl;  
       
    
system("pause");
return 0;
}
int prost(int x) 
{
    for (int i = sqrt(x); i > 1; i--)
        if (!(x % i))
            return false;
        else
    return true;
    
}
0
320 / 270 / 128
Регистрация: 24.05.2012
Сообщений: 629
05.06.2012, 19:11 8
Цитата Сообщение от Sylar9 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
int prost(int x) 
{
    for (int i = sqrt(x); i > 1; i--)
        if (!(x % i))
            return false;
        else
    return true;
}
Зачем Вы написали else?
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
05.06.2012, 19:35 9
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 <cstring>
 
 
int main() {
   std::size_t size = 1000;
   bool *simpleArray = new bool [ size ]();
   
   for ( std::size_t i = 2; i < size; i++ ) {
      if ( !simpleArray[ i ])
         for ( std::size_t j = i + i; j < size; j += i )
            simpleArray[ j ] = true;
   }
   
   for ( std::size_t i = 2; i < size; i++ )
      if ( !simpleArray[ i ])
         std::cout << i << ' ';
   
   std::cout << std::endl;
   
   delete [] simpleArray;
   
   return 0;
}
0
320 / 270 / 128
Регистрация: 24.05.2012
Сообщений: 629
05.06.2012, 19:51 10
Toshkarik, мне кажется, слишком громоздко (по памяти). Да и при таком алгоритме больше бы подошел std::bitset<unsigned>.
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
05.06.2012, 19:58 11
Совсем не громоздко, это простейший алгоритм "Решето Эратосфена". А так всегда стоит выбор между производительностью и расходом памяти.
0
139 / 60 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1
06.06.2012, 08:09  [ТС] 12
Цитата Сообщение от Toshkarik Посмотреть сообщение
Совсем не громоздко, это простейший алгоритм "Решето Эратосфена". А так всегда стоит выбор между производительностью и расходом памяти.
Мне надо создать функция

Добавлено через 3 минуты
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
Зачем Вы написали else?
убрал else все равно ошибки при компиляции
C:\Users\111\Desktop\Çàêàç2.cpp In function `int prost(int)':
30 C:\Users\111\Desktop\Çàêàç2.cpp invalid operands of types `int' and `double' to binary `operator%'
0
320 / 270 / 128
Регистрация: 24.05.2012
Сообщений: 629
06.06.2012, 08:57 13
Цитата Сообщение от Sylar9 Посмотреть сообщение
invalid operands of types `int' and `double' to binary `operator%'
Зачем Вы сменили тип переменной i на double?
0
139 / 60 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1
06.06.2012, 09:12  [ТС] 14
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
Зачем Вы сменили тип переменной i на double?
не знаю, что так что так не работает
0
320 / 270 / 128
Регистрация: 24.05.2012
Сообщений: 629
06.06.2012, 09:20 15
Полностью рабочий код. От предложенного мной изначально отличается лишь явным приведением типа. Однако компилятор выдает только предупреждение, а не ошибку.
C++
1
2
3
4
5
6
7
8
#include <cmath>
 
bool IsSimple(unsigned x) {
    for (unsigned i = (unsigned)sqrt(x); i > 1; i--)
        if (!(x % i))
            return false;
    return true;
}
0
139 / 60 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1
06.06.2012, 10:22  [ТС] 16
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
Полностью рабочий код. От предложенного мной изначально отличается лишь явным приведением типа. Однако компилятор выдает только предупреждение, а не ошибку.
C++
1
2
3
4
5
6
7
8
#include <cmath>
 
bool IsSimple(unsigned x) {
    for (unsigned i = (unsigned)sqrt(x); i > 1; i--)
        if (!(x % i))
            return false;
    return true;
}
у меня в DEV C++ не создает exe файл с это ошибкой
0
320 / 270 / 128
Регистрация: 24.05.2012
Сообщений: 629
06.06.2012, 10:39 17
Ищите ошибку.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <cmath>
#include <iostream>
 
using namespace std;
 
bool IsSimple(unsigned x) {
    for (unsigned i = (unsigned)sqrt(x); i > 1; i--)
        if (!(x % i))
            return false;
    return true;
}
 
int main() {
    unsigned x;
    cin >> x;
    cout << IsSimple(x)? "true": "false";
}
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
06.06.2012, 10:58 18
Вот достаточно быстрый алгоритм нахождения простых чисел http://ru.wikipedia.org/wiki/Решето_Аткина

Добавлено через 55 секунд
Цитата Сообщение от Sylar9 Посмотреть сообщение
у меня в DEV C++ не создает exe файл с это ошибкой
Скомпилируйте с командной строки, так ведь проще будет.
0
06.06.2012, 10:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2012, 10:58
Помогаю со студенческими работами здесь

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

Рекурсивная функция для последовательного поиска в массиве из n целых чисел
Разработать программу, использующую рекурсивную функцию для выполнения задачи. Последовательный...

Метод поиска простых чисел
Кусок кода с метода поиска простых чисел, но не понимаю во втором цикле почему j&lt;i?? for(...

Программа поиска простых чисел
Необходимо написать программу для поиска простых чесил в интервале от 1 до 100 на языке СИ.Простое...

Алгоритм поиска простых чисел
Доброго времени суток. Помогите пожалуйста с алгоритмом поиска простых чисел в массиве. Искал...

Эффективный алгоритм поиска простых чисел на С++
Хотел написать функцию которая вычисляет простое число или сложное, но оно не вычисляется. Цикл...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru