
Другие языки программирования и технологии
можно ли оптимизировать?
поиск простых чисел на диапазоне от 1 до n 

http://www.helloworld.ru/texts/comp/algor/chisl/simple/index.htm
http://arti.kz/555-об-одном-алгоритме-поиска-простых-чис
Во-первых, не имеет никакого смысла проверять, делится ли число п на k, если k больше квадратного корня из п, потому что по крайней мере один делитель числа п, если он есть, не должен превосходить квадратного корня из п, а одного делителя уже достаточно, чтобы считать число составным
Существует также знаменитая арифметическая теорема, которая гласит, что любое целое число можно представить в виде произведения простых чисел, и это произведение единственное. Число не является составным, если оно не делится ни на одно простое число, меньшее себя.
r= 1
p(1)= 2
for n= 3 to 1000
k= 1
f=1
while f=1 and p(k )<= sqrt (n )
test=rem (n/p (k ))
if test =0 then f=0
k= k + 1
if f=1 then r= r + 1
P (r)= n
На компьютерном графике составные числа представлены маленькими белыми квадратиками, а простые — черными.

http://arti.kz/555-об-одном-алгоритме-поиска-простых-чис
Во-первых, не имеет никакого смысла проверять, делится ли число п на k, если k больше квадратного корня из п, потому что по крайней мере один делитель числа п, если он есть, не должен превосходить квадратного корня из п, а одного делителя уже достаточно, чтобы считать число составным
Существует также знаменитая арифметическая теорема, которая гласит, что любое целое число можно представить в виде произведения простых чисел, и это произведение единственное. Число не является составным, если оно не делится ни на одно простое число, меньшее себя.
r= 1
p(1)= 2
for n= 3 to 1000
k= 1
f=1
while f=1 and p(k )<= sqrt (n )
test=rem (n/p (k ))
if test =0 then f=0
k= k + 1
if f=1 then r= r + 1
P (r)= n
На компьютерном графике составные числа представлены маленькими белыми квадратиками, а простые — черными.

Ирина Григоревская
ну и конечно, сразу отбрасывать такие числа, которые заведомо делятся, напр которые оканчиваются на 5 -- полюбому делятся на 5 - выкидуем.
Да! Самое элементарное, дело в том что невозможно получить целое число поделив X/M при N>M, а простое число не может делиться на число большее чем оно само кроме себя. В вашем случае "X" - это множество чисел второй половины проверяемого диапазона. ТОЕСТЬ мы просто отсекаем вторую часть диапазона (считаем от I до N/2 ), так как в любом случае целых делителей простое число там иметь не может. А значит и время работы алгоритма укоротится вдвое.
Для этого после чтения вашей переменной "n" запишите строку:
n := n / 2;
Второй шаг оптимизации - это использование ассемблерной вставки в месте проверки числа на предмет "простоты".
Весь компот... если придумаю ещё че - напишу.
Для этого после чтения вашей переменной "n" запишите строку:
n := n / 2;
Второй шаг оптимизации - это использование ассемблерной вставки в месте проверки числа на предмет "простоты".
Весь компот... если придумаю ещё че - напишу.
Александр Александр
мне надо для уровня 9 класса сделать, ассемблер рановато ;)
массив от 1 до 2000000?
Александр Александр
да, lasarus позволяет
Похожие вопросы
- Как можно оптимизировать работу ПХП скрипта?
- Помогите пожалуйста оптимизировать решение задачи (Зайчик) на C++
- C++.Обычная задача : найти кол-во пар (x,y) , удовлетворяющих условию X^2+Y^2<N. Помогите оптимизировать.
- под какое разрешение монитора лучше оптимизировать сайт?
- помогите оптимизировать программу qBasic
- с/c++ у максимально оптимизированного под конкретны
- компьютер не тянет приложение, оптимизировать код или приобрести и усилить железо в 4 раза?
- Помогите пожалуйста оптимизировать C++ код
- Зачем математика программисту? Помогает она оптимизировать код? Зачем знать, например, дифференциальные уравнения?
- Неужели так сложно оптимизировать систему?