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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
#1

Сортировка Простых чисел - C++

01.05.2009, 19:20. Просмотров 948. Ответов 10
Метки нет (Все метки)

Это код сортировки простых чисел
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int flAg=0;// Сравнитель обычно такую вещь называю
        int counter=0; // счетчик
        int number=1000;// значение
        int *pocket=new int [10000000]; //указатель на массив (динамически)
        while (number<=2000)//  выполнять до значения   
        {
            for (int i=2; i<=sqrt((double)number); i++) // цикл поиска простых чисел
                if ((number%i)==0)  flAg=1; 
            if (flAg==0) // если подходит под значение number%i)==0 значит число непростое и берется след. значение счетчика
            {
                pocket[counter]=number;  counter++;
            }        number++;   flAg=0;
        }       
        for (int i=0; i<counter; i++)   // подстановка в массив значений и увеличение счетчика и значения если условие верно (flag==0)
            std::cout << pocket[i] << std::endl;// цикл по массиву и вывод на экран.
Как вывести на экран простое самое близкое простое число
от
pow(10,100)-n=prime number;
Взять цикл надо от pow(10,100)до pow(10,99) и потом break до первого простого числа но как
вывести на экран?Требуются специальные программы?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
galileopro
Пробующий
183 / 96 / 1
Регистрация: 28.04.2009
Сообщений: 1,040
02.05.2009, 19:28     Сортировка Простых чисел #2
Можн попробовать сделать функцию, которая будет записывать в динамический массив число поэлементно, а затем выводить на экран без пробелов. Для организации этого массива я когда-то применял div и mod для длинных чисел, написанные правда на Паскале. Ну типа берешь находишь мод этого числа-массива на 10 и это последняя цифра, а потом делишь нацело это число на 10 (длинный див), результат записываешь в массив обратно. Так продолжается, пока не будут выделены все цифры. Див и мод прийдется писать отдельными функциями.

Добавлено через 20 часов 1 минуту 24 секунды
Кстати, если поможет, то для написания длинных дива и мода нужно вспомнить, как в третьем классе делили в столбик Так как алгоритм построен именно на этом.
Ну примерно это будет выглядеть так:
Это Див для массива и целого числа p (Делим массив на p нацело):
C++
1
2
3
4
5
6
7
8
9
function Mass DivLong(Mass h; int p){//Mass - исходное длинное число
var Mass t; //Mass - массив целых чисел размером n
var int m;
for(var i=0;i<=n-1;i++){
t[i]=(h[i]*10+h[i+1])div p;
h[i+1]=(h[i]*10+h[i+1])mod p;
}
return t;
}
В результате получим массив - результат деления нацело.
Кстати p здесь двузначное. Если нужно больше, то прийдется немного изменить.
Кстати, для десяитчной системы счисления там будет еще проще.
Gravity
557 / 551 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
02.05.2009, 19:41     Сортировка Простых чисел #3
В Си деление целых делается так же, как и деление чисел с плавающей запятой, оператором "/", а значение по модулю находится оператором "%". Не надо заново изобретать велосипед.
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
02.05.2009, 19:45     Сортировка Простых чисел #4
Цитата Сообщение от Gravity Посмотреть сообщение
function Mass DivLong(Mass h; int p){//Mass - исходное длинное число
var Mass t; //Mass - массив целых чисел размером n
var int m;
for(var i=0;i<=n-1;i++){
t[i]=(h[i]*10+h[i+1])div p;
h[i+1]=(h[i]*10+h[i+1])mod p;
}
return t;
}
Что это за язык такой ???????


Цитата Сообщение от Gravity Посмотреть сообщение
значение по модулю находится оператором "%".
может я не совсем понял вас, но оператором % находится остаток от деления.
Gravity
557 / 551 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
02.05.2009, 19:51     Сортировка Простых чисел #5
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
может я не совсем понял вас, но оператором % находится остаток от деления.
Остаток от деления или деление по модулю - это одно и то же.
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
02.05.2009, 20:05     Сортировка Простых чисел #6
ну тогда так и надо было писать: значение деления по модулю
если честно, первый раз слышу о таком названии.
galileopro
Пробующий
183 / 96 / 1
Регистрация: 28.04.2009
Сообщений: 1,040
02.05.2009, 20:56     Сортировка Простых чисел #7
Язык там C++, но писал на скорую руку и там ошибки.
Применять \ и % можно, но я так понимаю, что проблема в том, что чило либо очень длинное, и эти операции не работают, либо это число вообще поразрядно записано в динамический массив.
Код Дива я переписывал с ранее мною написанного кода на Паскале, поэтому там ошибки. Но понять суть алогритма там можно.

Добавлено через 2 минуты 15 секунд
Может так:
C++
1
2
3
4
5
6
7
8
function Mass DivLong(Mass h; int p){    //Mass - исходное длинное число
var Mass t;        //Mass - массив целых чисел размером n
for(var i=0;i<=n-1;i++){
t[i]=(h[i]*10+h[i+1])/ p;
h[i+1]=(h[i]*10+h[i+1])% p;
}
return t;
}
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
02.05.2009, 21:01     Сортировка Простых чисел #8
Цитата Сообщение от galileopro Посмотреть сообщение
Язык там C++, но писал на скорую руку и там ошибки.
вообщем-то, просто это не очень похоже на си++... прежде всего словами function и var
galileopro
Пробующий
183 / 96 / 1
Регистрация: 28.04.2009
Сообщений: 1,040
02.05.2009, 21:07     Сортировка Простых чисел #9
А ну да точно
Типа этого:
C++
1
2
3
4
5
6
7
8
 Mass DivLong(Mass h; int p){    //Mass - исходное длинное число
Mass t;        //Mass - массив целых чисел размером n
for(var i=0;i<=n-1;i++){
t[i]=(h[i]*10+h[i+1])/ p;
h[i+1]=(h[i]*10+h[i+1])% p;
}
return t;
}
Добавлено через 1 минуту 49 секунд
Я забыл совсем,что var можно не писать, и для объявления функции нужно только указать тип возвращаемого результата.
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
02.05.2009, 21:19     Сортировка Простых чисел #10
а в цикле for что у вас var делает?
при перечеслении аргументво функции, ставится, а не ;

p.s: так что такое Mass ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2009, 21:25     Сортировка Простых чисел
Еще ссылки по теме:

Поиск простых чисел C++
C++ Сортировка списка методом простых вставок
Поиск простых чисел C++
Поиск простых чисел C++
Нахождение простых чисел C++

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

Или воспользуйтесь поиском по форуму:
galileopro
Пробующий
183 / 96 / 1
Регистрация: 28.04.2009
Сообщений: 1,040
02.05.2009, 21:25     Сортировка Простых чисел #11
Mass - это объявленный где-либо вне функции глобальный массив из целых чисел количеством n чисел. А вместо var i=0 надо писать int i=0 похоже. Вообще у Sekt число записывается в динамический массив и походу там можно просто с помощью операции взятия адреса обратиться к каждой цифре числа и вывести их без пробелов на экран. Наверно. Еще не пробовал.
Yandex
Объявления
02.05.2009, 21:25     Сортировка Простых чисел
Ответ Создать тему
Опции темы

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