Моё меню Общее меню Пользователи Правила форума Все прочитано
Вернуться   uForum.uz > ИКТ и телеком > IT-индустрия > Софт > Программирование
Знаете ли Вы, что ...
...для каждой темы существует свой раздел. Изучите структуру форума. Если соответствующего раздела нет, то всегда есть раздел "Разное" :)
<< Предыдущий совет - Случайный совет - Следующий совет >>

Программирование Обсуждаются вопросы мира программирования. Слово программирование отпугивает некоторых... Не бойтесь, заходите учитесь, помогайте, обучайте...


Ответить

 
Опции темы Опции просмотра
Старый 14.05.2011 12:17   #31  
Заблокирован(а)
Аватар для JackDaniels
Оффлайн
Сообщений: 18,519
+ 10,956  12,586/6,453
– 307  539/385

Vatican City State
Оффтоп:
Цитата:
Сообщение от Evgeniy Sklyarevskiy Посмотреть сообщение
Мы на пороге великого открытия, осталось самую малость.... проследить и объяснить :-0)
Да мы вечно на пороге, уж переступить бы…
Ответить 
Старый 14.05.2011 12:29   #32  
Real ID Group Ultimate uParty Member ЕС
Аватар для Evgeniy Sklyarevskiy
Оффлайн
UZINFOCOM
Сотрудник ZiyoNET
AKA:ЕС, barbaris, arbuz
Сообщений: 32,709
+ 10,568  16,236/8,377
– 50  472/298

UzbekistanLiveJournalАккаунт на TwitterFacebook
Оффтоп:
Цитата:
Сообщение от RHD Посмотреть сообщение
Да мы вечно на пороге, уж переступить бы…
Давайте пока подумаем что будем делать с премией за великое открытие?
Ответить 
Старый 14.05.2011 12:48   #33  
Заблокирован(а)
Аватар для JackDaniels
Оффлайн
Сообщений: 18,519
+ 10,956  12,586/6,453
– 307  539/385

Vatican City State
Оффтоп:
Цитата:
Сообщение от Evgeniy Sklyarevskiy Посмотреть сообщение
Оффтоп:
Цитата:
Сообщение от RHD Посмотреть сообщение
Да мы вечно на пороге, уж переступить бы…
Давайте пока подумаем что будем делать с премией за великое открытие?
Потратим на велосипеды
Ответить 
Старый 14.05.2011 13:16   #34  
Real ID Group uParty Member
Аватар для Shuhrat Ismailov
Оффлайн
Сообщений: 3,411
+ 2,928  2,654/1,361
– 84  129/82

UzbekistanОтправить сообщение для Shuhrat Ismailov с помощью Skype™Facebook
Цитата:
Сообщение от Evgeniy Sklyarevskiy Посмотреть сообщение
Рассмотрите крупно картинку, они там есть! Гарднер объяснял это семейством простых чисел, порождаемых уравнениями вроде x^2 + x + 41 - дает подряд много простых чисел, лежащих на диагонали.
Эта формула не видна на скатерти Улама. Чтобы ее увидеть, нужно в качестве начального числа спирали выбрать 41. Тогда отчетливо получится прямая, содержащая 40 последовательных простых чисел. Воспользуйтесь простенькой программой на русском языке для всяческих экспериментов с визуализацией
Вложения
Тип файла: zip Ulam.zip (12.1 Кб, 6 просмотров)
__________________
http://www.matholymp.zn.uz

Последний раз редактировалось Shuhrat Ismailov; 14.05.2011 в 13:23.
Ответить 
Старый 14.05.2011 15:49   #35  
Real ID Group Ultimate uParty Member ЕС
Аватар для Evgeniy Sklyarevskiy
Оффлайн
UZINFOCOM
Сотрудник ZiyoNET
AKA:ЕС, barbaris, arbuz
Сообщений: 32,709
+ 10,568  16,236/8,377
– 50  472/298

UzbekistanLiveJournalАккаунт на TwitterFacebook
Цитата:
Сообщение от ShN Посмотреть сообщение
Воспользуйтесь простенькой программой на русском языке для всяческих экспериментов с визуализацией
Спасибо, занятная штука!
Ответить 
Реклама и уведомления
Старый 16.05.2011 12:26   #36  
Real ID Group Ultimate ex-wild_John
Супермодератор
Аватар для German Stimban
Оффлайн
Центр программистов Bepro
Начальник отдела
Сообщений: 8,039
+ 4,910  6,509/2,845
– 298  135/90

UzbekistanОтправить сообщение для German Stimban с помощью ICQОтправить сообщение для German Stimban с помощью Skype™LiveJournal
Цитата:
Сообщение от Наташа Посмотреть сообщение
Цитата:
Сообщение от German Stimban Посмотреть сообщение
В ходе урока раскачался и написал код решения с помощью решета Эратосфена на С++. (если интересно, могу вывести). В результате максимально оптимизированный "классический" алгоритм
Да, конечно выкладывайте
Решето Эратосфена, до 5 миллионов считает 0.45 секунд.
Код:
#include <iostream>
int main()
{
        int size=5000000;
	bool num[size];
	for (int i=0;i<size;i++)
		num[i]=true;
	num[0]=num[1]=false;
	for (int i=2;i<size;i++)
	{
		if (num[i])
		{
			int count=2;
			while (i*count<size)
				num[i*count++]=false;
		}
	}
	for (int i=2;i<size;i++)
		if (num[i])
			std::cout<<i<<"\n";
	return 0;
}
Решето Сур(не помню как дальше), немного модернизированное, до 5 миллионов считает 1.7 секунд.
Код:
#include <iostream>

int main()
{
  int size=5000000;
  bool isPrime[size];
  for (int i=0;i<=size;i++)
    isPrime[i]=(i%2==1);
  isPrime[0]=isPrime[1]=false;
  for (int i=3;i<=size/3;i+=2)
    for (int j=3;j<=size/i;j+=2)
      isPrime[i*j]=false;
  for (int i=0;i<=size;i++)
    if (isPrime[i]) std::cout<<i<<endl;
}
__________________
Герман - это не имя, это особое состояние души (Джим Анджер)
Ответить 
Старый 17.05.2011 00:48   #37  
Аватар для Наташа
Оффлайн
Сообщений: 1,306
+ 885  788/480
– 0  51/26

Germany
Цитата:
Сообщение от German Stimban Посмотреть сообщение
Решето Эратосфена, до 5 миллионов считает 0.45 секунд.
Да, это оно самое..
Можно попробовать и сюда внести уже преложенные Вами улучшения
возможно это чуточку ускорило бы его
Например
for (int i=2;i<size;i++)

заменить на
for (int i=2;i<sqrt(size);i++)

а так же
int count=2;
заменить на
int count=i;

Ваш замечательный алгоритм мог бы выглядить например так:
Код:
#include <iostream>
int main()
{
        int size=5000000;
	bool num[size];
	for (int i=0;i<size;i++)
		num[i]=true;
	num[0]=num[1]=false;
	for (int i=2;i<sqrt(size);i++)
	{
		if (num[i])
		{
			int count=i;
			while (i*count<size)
				num[i*count++]=false;
		}
	}
	for (int i=2;i<size;i++)
		if (num[i])
			std::cout<<i<<"\n";
	return 0;
}
Ответить 
Старый 17.05.2011 09:25   #38  
Real ID Group Ultimate uParty Member ЕС
Аватар для Evgeniy Sklyarevskiy
Оффлайн
UZINFOCOM
Сотрудник ZiyoNET
AKA:ЕС, barbaris, arbuz
Сообщений: 32,709
+ 10,568  16,236/8,377
– 50  472/298

UzbekistanLiveJournalАккаунт на TwitterFacebook
Цитата:
Сообщение от Наташа Посмотреть сообщение
for (int i=2;i<sqrt(size);i++)
Может лучше <sqrt(size+1) на всякий случай? Чтобы не пропустить числа близкие к корню.
Ответить 
Старый 17.05.2011 12:42   #39  
Real ID Group Ultimate ex-wild_John
Супермодератор
Аватар для German Stimban
Оффлайн
Центр программистов Bepro
Начальник отдела
Сообщений: 8,039
+ 4,910  6,509/2,845
– 298  135/90

UzbekistanОтправить сообщение для German Stimban с помощью ICQОтправить сообщение для German Stimban с помощью Skype™LiveJournal
Цитата:
Сообщение от Наташа Посмотреть сообщение
Можно попробовать и сюда внести уже преложенные Вами улучшения
возможно это чуточку ускорило бы его
Например
for (int i=2;i<size;i++)

заменить на
for (int i=2;i<sqrt(size);i++)
а так же
int count=2;
заменить на
int count=i;
Ваш замечательный алгоритм мог бы выглядить например так:
Спасибо большое, глаз замылился и я проглядел. Ускорение почти в 2 раза.
__________________
Герман - это не имя, это особое состояние души (Джим Анджер)
Ответить 
"+" от:
Ответить
Опции темы
Опции просмотра




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Advertisement System V2.5 By Branden
OOO «Единый интегратор UZINFOCOM»


Новые 24 часа Кто на форуме Новички Поиск Кабинет Все прочитано Вверх