Форум программистов, компьютерный форум CyberForum.ru

Тест простоты - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
vlad_light
4 / 4 / 0
Регистрация: 24.09.2012
Сообщений: 178
06.10.2012, 13:09     Тест простоты #1
Выдаёт ошибку выполнения: деление на 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2012, 13:09     Тест простоты
Посмотрите здесь:

C++ C++ тест
Проверка простоты чисел C++
Тест на C++ C++
Тест по С++ C++
C++ Тест
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mirax
0 / 0 / 0
Регистрация: 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;
}
}
Если вам имено через векторы нужно, то не знаю.
vlad_light
4 / 4 / 0
Регистрация: 24.09.2012
Сообщений: 178
06.10.2012, 15:02  [ТС]     Тест простоты #3
Видимо, у Вас не подключен vector
C++
1
#include <vector>
И мой код по-интереснее будет:
1. он проходит только по простым числам
2. если у меня заменить в конце return 0 на return x, и сделать некоторые косметические изменения, то его можно использовать для факторизации чисел на простые множители.
mirax
0 / 0 / 0
Регистрация: 05.10.2012
Сообщений: 13
06.10.2012, 15:05     Тест простоты #4
Вектор подключен.
http://fotohost.kz/images/2012/10/06/FsyYw.jpg
скрин
vlad_light
4 / 4 / 0
Регистрация: 24.09.2012
Сообщений: 178
06.10.2012, 15:09  [ТС]     Тест простоты #5
Ну тогда не знаю... А Вы чем компилируете?
mirax
0 / 0 / 0
Регистрация: 05.10.2012
Сообщений: 13
06.10.2012, 15:12     Тест простоты #6
dev c++ 4.9.9.2 скрин ошибки на пост выше
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
06.10.2012, 15:14     Тест простоты #7
vlad_light, надо проверить переменную iter. Она, случаем, не нулю равна?
softmob
1248 / 698 / 155
Регистрация: 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;
}
vlad_light
4 / 4 / 0
Регистрация: 24.09.2012
Сообщений: 178
06.10.2012, 16:16  [ТС]     Тест простоты #9
С предыдущей ошибкой разобрался...
softmob, я хочу написать код, который будет проходить не по всем целым числам, а только по простым. Скажем, для одного числа Ваш алгоритм работает быстрее, но вот если нужно будет проверить много чисел, то массив из простых чисел мне поможет. Правда, я только сейчас понял, что написал совсем не то, что нужно: нужно создать отдельный массив, которй я буду "обучать" при вводе чисел.
Сейчас займусь написанием кода, позже выложу.

Не по теме:

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

mirax
0 / 0 / 0
Регистрация: 05.10.2012
Сообщений: 13
06.10.2012, 16:18     Тест простоты #10
Цитата Сообщение от softmob Посмотреть сообщение
cbegin() и auto появились только в 11 стандарте.
Мне это не очем не говорит. Можно пояснений? Такой код компилировать в visual studio 2011 тогда?
vlad_light
4 / 4 / 0
Регистрация: 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.
silent_1991
07.10.2012, 19:25
  #12

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2012, 01:05     Тест простоты
Еще ссылки по теме:

C++ Тест
C++ Тест по c++
C++ Программа проверки простоты по алгоритму

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

Или воспользуйтесь поиском по форуму:
vlad_light
08.10.2012, 01:05  [ТС]     Тест простоты
  #13

Не по теме:

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

Yandex
Объявления
08.10.2012, 01:05     Тест простоты
Ответ Создать тему
Опции темы

Текущее время: 07:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru