|
|
Знаете ли Вы, что ... | |
![]() |
...до того как открыть новую тему, стоит использовать поиск: такая тема уже может существовать. |
<< Предыдущий совет - Случайный совет - Следующий совет >> |
Программирование Обсуждаются вопросы мира программирования. Слово программирование отпугивает некоторых... Не бойтесь, заходите учитесь, помогайте, обучайте... |
Ответить |
|
Опции темы | Опции просмотра |
![]() |
#32 |
![]() ![]() ![]() |
__________________
ZiyoNet.uz - Образовательный портал с элементами соцсети. |
|
Ответить |
![]() |
#34 |
![]() ![]() |
Эта формула не видна на скатерти Улама. Чтобы ее увидеть, нужно в качестве начального числа спирали выбрать 41. Тогда отчетливо получится прямая, содержащая 40 последовательных простых чисел. Воспользуйтесь простенькой программой на русском языке для всяческих экспериментов с визуализацией
__________________
http://www.matholymp.zn.uz Последний раз редактировалось Shuhrat Ismailov; 14.05.2011 в 13:23. |
|
Ответить |
"+" от:
|
![]() |
#35 |
![]() ![]() ![]() |
Спасибо, занятная штука!
__________________
ZiyoNet.uz - Образовательный портал с элементами соцсети. |
|
Ответить |
Реклама и уведомления | |
![]() |
#36 | |
![]() ![]() Супермодератор |
Цитата:
Код:
#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; } Код:
#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; }
__________________
Герман - это не имя, это особое состояние души (Джим Анджер) |
|
|
Ответить |
3 "+" от:
|
![]() |
#37 |
Сообщений: 1,306
+ 885
788/480
– 0
51/26
![]() |
Да, это оно самое..
![]() Можно попробовать и сюда внести уже преложенные Вами улучшения возможно это чуточку ускорило бы его ![]() Например 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; } |
|
Ответить |
2 "+" от:
|
![]() |
#38 |
![]() ![]() ![]() |
Может лучше <sqrt(size+1) на всякий случай? Чтобы не пропустить числа близкие к корню.
__________________
ZiyoNet.uz - Образовательный портал с элементами соцсети. |
|
Ответить |
![]() |
#39 | |
![]() ![]() Супермодератор |
Цитата:
__________________
Герман - это не имя, это особое состояние души (Джим Анджер) |
|
|
Ответить |
"+" от:
|
|