Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
4 / 4 / 1
Регистрация: 24.09.2012
Сообщений: 178
1

Тест простоты

06.10.2012, 13:09. Показов 3262. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Выдаёт ошибку выполнения: деление на 0 в строке 13. Подскажите, что не так?
код
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
long prime_test (const long& x)
{
    std::vector<long> primes (2);
 
    if ((x != 2) && (x % 2 == 0))
        return 2;
 
    for (long i = 3; i <= (long)sqrt ((double)x) + 1; ++i)
    {
        int if_prime = 1;
 
        for (auto iter = primes.cbegin(); (*iter <= (long) sqrt ((double) i) + 1) && (if_prime != 0); ++iter)
            if (i % *iter == 0)
                if_prime = 0;
 
        if (if_prime == 1)
        {
            if (x % i == 0)
                return i;
            else
                primes.push_back (i);
        }
    }
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2012, 13:09
Ответы с готовыми решениями:

Проверка простоты числа
Объясните плиз что значит =! , pc - это функция проверки на простоту числа do { cout &lt;&lt;...

Проверка простоты чисел
Ребят,вот прожка...проверка простоты чисел на основе малой теоремы ферма... #include &quot;stdafx.h&quot;...

Программа проверки простоты по алгоритму
Алгоритм описан ниже на фото , нужно чтоб пользователь вводил число n и программа проверяла...

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

12
0 / 0 / 1
Регистрация: 05.10.2012
Сообщений: 13
06.10.2012, 14:34 2
У меня не компилиться, выдает ошибку на 12 строке про
C++
1
primes.cbegin(
Есть другой код на тест простоты чисел, но не знаю устроит ли он вас.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n;
int i;
int is_prime;
is_prime=true;
cout<<"Enter number";
cin>>n;
i=2;
while(i<=sqrt(static_cast<double>(n)))
{
if (n% i==0)
is_prime=false; i++;
 
if(is_prime)
cout<<"number is prime";
else cout<< "number is not prime";
return 0;
}
}
Если вам имено через векторы нужно, то не знаю.
0
4 / 4 / 1
Регистрация: 24.09.2012
Сообщений: 178
06.10.2012, 15:02  [ТС] 3
Видимо, у Вас не подключен vector
C++
1
#include <vector>
И мой код по-интереснее будет:
1. он проходит только по простым числам
2. если у меня заменить в конце return 0 на return x, и сделать некоторые косметические изменения, то его можно использовать для факторизации чисел на простые множители.
0
0 / 0 / 1
Регистрация: 05.10.2012
Сообщений: 13
06.10.2012, 15:05 4
Вектор подключен.
http://fotohost.kz/images/2012/10/06/FsyYw.jpg
скрин
0
4 / 4 / 1
Регистрация: 24.09.2012
Сообщений: 178
06.10.2012, 15:09  [ТС] 5
Ну тогда не знаю... А Вы чем компилируете?
0
0 / 0 / 1
Регистрация: 05.10.2012
Сообщений: 13
06.10.2012, 15:12 6
dev c++ 4.9.9.2 скрин ошибки на пост выше
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
06.10.2012, 15:14 7
vlad_light, надо проверить переменную iter. Она, случаем, не нулю равна?
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
06.10.2012, 15:41 8
Цитата Сообщение от mirax Посмотреть сообщение
У меня не компилиться, выдает ошибку на 12 строке про
Код C++
1
primes.cbegin
cbegin() и auto появились только в 11 стандарте.

Добавлено через 3 минуты
vlad_light, не совсем понял зачем столько всего наворочено, вам просто нужно проверить является ли число простым?
C++
1
2
3
4
5
6
7
bool prime_test(const long& x)
{
    for (long i = 2; i * i <= x; ++i)
        if (x % i == 0)
            return false;
    return true;
}
0
4 / 4 / 1
Регистрация: 24.09.2012
Сообщений: 178
06.10.2012, 16:16  [ТС] 9
С предыдущей ошибкой разобрался...
softmob, я хочу написать код, который будет проходить не по всем целым числам, а только по простым. Скажем, для одного числа Ваш алгоритм работает быстрее, но вот если нужно будет проверить много чисел, то массив из простых чисел мне поможет. Правда, я только сейчас понял, что написал совсем не то, что нужно: нужно создать отдельный массив, которй я буду "обучать" при вводе чисел.
Сейчас займусь написанием кода, позже выложу.

Не по теме:

Мне это программа нужна не для поиска простых чисел, а для оттачивания навыков c++. Поэтому, неэффекттивность данного алгоритма для меня, в принципе, не имеет значения.

0
0 / 0 / 1
Регистрация: 05.10.2012
Сообщений: 13
06.10.2012, 16:18 10
Цитата Сообщение от softmob Посмотреть сообщение
cbegin() и auto появились только в 11 стандарте.
Мне это не очем не говорит. Можно пояснений? Такой код компилировать в visual studio 2011 тогда?
0
4 / 4 / 1
Регистрация: 24.09.2012
Сообщений: 178
06.10.2012, 16:27  [ТС] 11
Не знаю, у меня почему-то тоже не компилируется в wxDev-C++, хотя я думал, что он поддерживает C++11.
C++11 это новый стандарт языка C++, пришёл на смену C++98. В новом стандарте внесли некоторые изменения, которые можно прочесть, например, здесь: http://ru.wikipedia.org/wiki/C%2B%2B11
Скорее всего, wxDev-C++ выпустили до появления стандарта C++11, поэтому функции, которые были внесены в этом стандарте wxDev-C++ не поддерживает. Я использую MS VS C++ 2010.
0
silent_1991
07.10.2012, 19:25
  #12

Не по теме:

Цитата Сообщение от vlad_light Посмотреть сообщение
C++11 это новый стандарт языка C++, пришёл на смену C++98
На смену 98 приходил ещё 2003 и пара дополнений. А уж им на смену уже и пришёл с++0х.

0
vlad_light
08.10.2012, 01:05  [ТС]     Тест простоты
  #13

Не по теме:

Прошу прощения за ложную информацию, просто скопировал из вики

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2012, 01:05

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

Исследовать эффективность двух алгоритмов определения простоты числа
дали задание: Цель: Следует выбрать эффективный алгоритм (по времени) теста простоты числа. На...

Определение простоты числа (функция возвращает неправильный ответ)
Программа получает на вход число x и должна определить, является ли данное число простым. Написана...

Следует выбрать эффективный алгоритм (по времени) теста простоты числа
Следует выбрать эффективный алгоритм (по времени) теста простоты числа. На исследование вам дается...


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

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