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

Найти самую длинную возрастающую цепочку простых чисел - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Чем отличается С++ от Visual С++? http://www.cyberforum.ru/cpp-beginners/thread350822.html
Здравствуете товарищи программисты! Только начал изучать язык программирования С++ и возникло пару вопросов. Чем отличается С++ от Visual С++? И еще посаветуйте какую-нибудь литературу на русском языке, для понятия основ языка.(В Универе дают только на английском) В поисковике искать не хотел, т.к. у бывалых программистов спросить лучше.Спасибо.
C++ как кодить на с в Microsoft visual studio 2010 первый раз встречаюсь с вижлой.как кодить на с в Microsoft visual studio 2010?обьясните поподробнее как что где создавать и как компилировать http://www.cyberforum.ru/cpp-beginners/thread350801.html
Solutions manual по книге c++ how to programm C++
Апну темку и заодно мб, кто-нибудь имеет еще 1 книжку. Нужен solutions manual по книге c++ how to programm (5 издания). Заранее спс.
Описать класс, реализующий бинарное дерево C++
Здравствуйте! Возникли проблемы с реализацией одной программы ....Описать класс, реализующий бинарное дерево, обладающее возможностью добавления новых элементов, удаления существующих, поиска элемента по ключу, а также последовательного доступа ко всем элементам. Написать программу, использующую этот класс для представления англо-русского словаря. Программа должна содержать меню, позволяющее...
C++ Не получаеться решить http://www.cyberforum.ru/cpp-beginners/thread350749.html
Дана функция y(x)=Ax2+Bx+C, где A – количество букв в фамилии студента, B количество букв в имени студента, C количество букв в отчестве студента. Для функции y(x) составить программу построения таблицы значений функции при изменении аргумента от L до R с шагом T. В каждой строке выводить значения аргумента и соответствующее ему значение функции. Кроме того, в конце таблицы напечатать...
C++ как удалить все елементы с очереди queue Есть очередь queue и в ней элементы, как удалить их все чтобы очередь осталась пустой? подробнее

Показать сообщение отдельно
#pragma
Временно недоступен
 Аватар для #pragma
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
15.09.2011, 16:36     Найти самую длинную возрастающую цепочку простых чисел
5. Вот тут дальше вопрос как определять что число простое и что можно поместить в отдельные нити расчитывать
В каждой нити выполняется функция,которая берёт параметр - указатель на начало числа в файле (то есть у каждого треда будет указатель со своим смещением относительно начала файла).
Эта функция проверяет число на простоту плюс можно класть число в структуру с флагом. Как проверять - Vladimir в принципе всё расписал. Потом все нити объединяются, и проходимся по структурам,считая последовательности. Размер последовательности можно хранить прямо в структуре числа, а также его смещение в файле. Например:
C++
1
2
3
4
5
6
struct number {
   unsigned long  original_number; // тут нужно правильный тип вписать)
   bool           is_simple;
   int            index_in_sequence;
   int            shift;
}
index_in_sequence содержит текущий индекс в последовательности, если обнаруживаем признаки начала новой последовательности, то меняем index_in_sequence снова на 0. Проходим в цикле по всем структурам и сохраняем указатель на структуру с наибольшим index_in_sequence. И потом остаётся только напечатать числа и их смещения.
Сразу в цикле можно создать максимально возможный блок тредов или меньше, в зависимости от размера файла.(например, у меня на 32-битной системе было ограничение в примерно 280-300 тредов) . На 64-битной системе ограничение гораздо больше (несколько десятков тысяч,точно не знаю). Если файл больше чем (блок тредов)*(размер числа), то создаём блоки нитей пачками, пока не достигнем конца файла.
 
Текущее время: 17:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru