Turbo Pascal

quant

yeah
В масштабах от 1 до 1000 можно просто перебирать все числа от 1 до 1000 и вложеным циклом делить их на числа от 1 до round(sqrt(число)) - медленно, но эффективно, по сравнению с полным циклом (т.к. числа небольшие).
а математически обьяснить почему до sqrt (число) можеш?
во фторых даже если ты хочеш "помочь" перебором то не for j:=1 to round(sqrt(i)) do а for j:=round(sqrt(i)) downto 1 do - если оставить во втором оно будет каждый раз вычислятся, если это не фри паскаль и вроде последние версии турбо
 
Останнє редагування:

Vladimir B.

милый добрый кот
Модератор
а математически обьяснить почему до sqrt (число) можеш?
во фторых даже если ты хочеш "помочь" перебором то не for j:=1 to round(sqrt(i)) do а for j:=round(sqrt(i)) downto 1 do - если оставить во втором оно будет каждый раз вычислятся, если это не фри паскаль и вроде последние версии турбо
Ошибаешься. Каждый раз оно не вычисляется - значение это сразу вгоняется в один из регистров и используется только для сравнения. Да и изменить параметры цикла во время работы нельзя (в документации это указано вроде-бы).

Математически? Хм... если мы не нашли делителей от единицы (она - первый делитель, само число - последний, итого: 2) до корня числа, то это число - простое. Логика - произведение двух простых чисел - не простое число. Так? Корень числа в квадрате - и есть простое число. Если мы поделим число на его корень без остатка - то число не простое. А дальше - мы будем делить на бОльшие числа - в частном получать меньшие, то-есть те, на которые мы делили от 1 до корня. Повторяем те же операции - только в обратном порядке. Бессмысленно, зачем повторять - потому... способ верный.

2MechEng до половины диапазона? Аргументы в студию! Сложные числа - не сумма простых, а произведение.
 

GrAndSE

Тёмный
Модератор
цикл надо до половины диапазона, а не корня
хм... Итересно.. Интересно
Пример, как говрится в студию, какое число, которое не делится на все числа включительно с его корнем квадратным, округлённым по правилам округления (прошу простить за тавтологию), может быть не простым?
Рассказываю с точки зрения простейшей логики.
Пусть имеется некое целоей число a. Его корень - вещественное b. Пусть a = с * d. Тогда либо с = d = b, либо c > b > d, либо наоборот :). Так имеет ли смысл проверять лишнее? Т.е. при превышении числа, которое является возможным делителем, величины корня квадратного от проверяемого числа, мы получаем, что результат деления принадлежит тому промежутку, который был уже проверен.
 

СтеклоеБ

Забанен
Пацаны вот условие задачи!!! Напишите пожалуста полный текст!! Заранее спасибо! Итак: По трем введенным вещественным значениям а,b,c являющимся коефициентами квадратного уравнения ax^2+bx+c=0, провести анализ уравнения и если возможно найти решения. Результат анализа и решения вывести на екран!!!
 

Hamster

Well-Known Member
readln(a,b,c);
d:=sqr(b)-4*a*(c);
if d<0 then
writeln('LAMO');
if d=0 then
begin
writeln( 'D=0! Один корень. ') ;
writeln((-b/(2*a)):12:12);
end else
begin
writeln(((-b+sqrt(d))/(2*a)):12:12);writeln((-b-sqrt(d))/(2*a):12:12) ;
end;
 
Останнє редагування:
Зверху