Примеры заданий ЕГЭ по информатике

Cttacutejib

Пользователь
Да что в этом сложного? Извлечь из этого числа квадратный корень и проверить все натуральные делители до него. Не делится нацело на все - простое, иначе нет.
можно это на самом языке? например байсике? не могу представить некоторый момент..
 

sami

Местный
Да что в этом сложного? Извлечь из этого числа квадратный корень и проверить все натуральные делители до него. Не делится нацело на все - простое, иначе нет.
Простое число — это натуральное число, которое имеет ровно два натуральных делителя (только 1 и самого себя).

Потому требуется не проверять все натуральные делители до него, а убедиться что число не имеет натуральных делителей кроме 1 и самого себя.
 

Cttacutejib

Пользователь
Простое число — это натуральное число, которое имеет ровно два натуральных делителя (только 1 и самого себя).

Потому требуется не проверять все натуральные делители до него, а убедиться что число не имеет натуральных делителей кроме 1 и самого себя.
лично я бы пошёл примерно по такому алгоритму (q basic)
for i=1 to 50
a=str$(A(i))
d=len(a)
for g=1 to d
c=c+val(mid(a,g,1))
next g
if c/3><c\3 and A(i)\abs(A(i))><abs(A(i)) then
if mid(a,d,1)=1 or mid(a,d,1)=3 or mid(a,d,1)=7 or mid(a,d,1)=9 then k=k+1
end if
next i
print k
end

тупо прогнал по всем условиям которые знаю про простые числа) по математике я не отличник... так что хз, мб то что мне в голову влетело к чертям не годится)
 

sami

Местный
тупо прогнал по всем условиям которые знаю про простые числа) по математике я не отличник... так что хз, мб то что мне в голову влетело к чертям не годится)
[codebox]
for i=1 to 50
a=str$(A(i)) ;STR$ returns a string representation of a number. The string starts with a space.
d=len(a) ;Returns the number of characters in a string
for g=1 to d
c=c+val(mid(a,g,1)) ; The MID$ function returns part of a string (a substring).
;VAL converts a string representation of a number to a number.
next g

if c/3><c\3 and A(i)\abs(A(i))><abs(A(i)) then
if mid(a,d,1)=1 or mid(a,d,1)=3 or mid(a,d,1)=7 or mid(a,d,1)=9 then k=k+1
end if
next i
print k
end
[/codebox]

Похоже что после цикла по g переменная c содержит сумму всех цифр + val(" ").
Дальше результат деления c на 3 сравнивается с делением c нацело на 3, если я правильно понял.
Потом i-ое число деленное нацело на абсолютное значение сравнивается с абсолютным значением себя же. Что это? результат будет всегда True кроме случая когда A(i)= 1
потом если число начинается с единицы или с 3-ки или с 7-ки или с 9-ки, то увеличивается счетчик. Но а-то начинается с символа пробел.
Какое отношение это все имеет к простоте числа?
 

Cttacutejib

Пользователь
for i=1 to 50
a=str$(A(i)) ;STR$ returns a string representation of a number. The string starts with a space.
d=len(a) ;Returns the number of characters in a string
for g=1 to d
c=c+val(mid(a,g,1)) ; The MID$ function returns part of a string (a substring).
;VAL converts a string representation of a number to a number.
next g

if c/3><c\3 and A(i)\abs(A(i))><abs(A(i)) then
if mid(a,d,1)=1 or mid(a,d,1)=3 or mid(a,d,1)=7 or mid(a,d,1)=9 then k=k+1
end if
next i
print k
end

Похоже что после цикла по g переменная c содержит сумму всех цифр + val(" ").
Дальше результат деления c на 3 сравнивается с делением c нацело на 3, если я правильно понял.
Потом i-ое число деленное нацело на абсолютное значение сравнивается с абсолютным значением себя же. Что это? результат будет всегда True кроме случая когда A(i)= 1
потом если число начинается с единицы или с 3-ки или с 7-ки или с 9-ки, то увеличивается счетчик. Но а-то начинается с символа пробел.
Какое отношение это все имеет к простоте числа?

dim(a,d,1) это последнее число, все простые числа оканчиваются на одно из этих чисел.
по поводу абсолюта да, хз как руки написали это команду) нам нужна команда вычисляющая корень числа, это вытекает их того что у простого числа корень дробен, а сл=но не равен целому числу, за целое число я просто взял целочисленное деление, это как проверка числа 17, целочисленное деление отличается от дробного деления на его корень, с числом 16 всё наоборот)
про сумму всех цифр, если сумма всех цифр делится на 3 целочисленно, сл-но это число не простое, наверно стоит в исключение записать в алгоритм цифру 3..ну как-то так)
эм.. кто-нибудь напомнит команду вычисления корня?+)
 

sami

Местный
dim(a,d,1) это последнее число, все простые числа оканчиваются на одно из этих чисел.
А как же число 5?
Нечетность числа не достаточный признак простоты.
по поводу абсолюта да, хз как руки написали это команду) нам нужна команда вычисляющая корень числа, это вытекает их того что у простого числа корень дробен, а сл=но не равен целому числу, за целое число я просто взял целочисленное деление, это как проверка числа 17, целочисленное деление отличается от дробного деления на его корень, с числом 16 всё наоборот)
про сумму всех цифр, если сумма всех цифр делится на 3 целочисленно, сл-но это число не простое, наверно стоит в исключение записать в алгоритм цифру 3..ну как-то так)
Делимость суммы цифр на 3 - это признак делимости на 3, и он не является достоверным признаком непростоты, т.к. само число 3 - простое.
 

Cttacutejib

Пользователь
А как же число 5?
Нечетность числа не достаточный признак простоты.

Делимость суммы цифр на 3 - это признак делимости на 3, и он не является достоверным признаком непростоты, т.к. само число 3 - простое.
числа оканчивающиеся на 5 как минимум делятся на 5)
я не перечислял возможные варианты я сделал так:
1)если сумма цифр в числе НЕ тратна трём
2)если число оканчивается или на 1 или на 3 или на 7 или на 9
3) если у числа корень НЕ целое число
то счётчик увеличивается на 1

а вообще я тут почитал выше и хорошую и простую идею подсказали мб даже самого этого не зная)
for g=1 to 50
s=0
for i=2 to A(i)-1
if A(i)mod(i)>0 then s=s+1
next i
if A(i)-2=s then k=k+1
next g
print k
т.е если остаток при делении на все числа стоящие до заданного чесла имеется, то число простое))
 

sami

Местный
числа оканчивающиеся на 5 как минимум делятся на 5)
я не перечислял возможные варианты я сделал так:
1)если сумма цифр в числе НЕ тратна трём
2)если число оканчивается или на 1 или на 3 или на 7 или на 9
3) если у числа корень НЕ целое число
то счётчик увеличивается на 1
И это не правильно. Простой пример: 2 и 5 - простые числа, но ты их не посчитаешь. Еще пример: число 77. Сумма цифр не кратна 3м, оканчивается на 7 и не имеет целого корня. Но оно делится на 7.

а вообще я тут почитал выше и хорошую и простую идею подсказали мб даже самого этого не зная)
for g=1 to 50
s=0
for i=2 to A(i)-1
if A(i)mod(i)>0 then s=s+1
next i
if A(i)-2=s then k=k+1
next g
print k
т.е если остаток при делении на все числа стоящие до заданного чесла имеется, то число простое))
Словами написал почти верный признак (остаток от деления 1 будет 0 даже для простого числа). Но код не рабочий.
 

Cttacutejib

Пользователь
И это не правильно. Простой пример: 2 и 5 - простые числа, но ты их не посчитаешь. Еще пример: число 77. Сумма цифр не кратна 3м, оканчивается на 7 и не имеет целого корня. Но оно делится на 7.
юпс)

да кстать... причём ошибку выдаёт он мне при самом ещё вводе чисел в массив..(
масив же так задаётся??
for i=1 to 50
input A(i)
next i
 

Q_star

Новичок
Заблокирован
Var
i,j,a,N:integer;
prostoe:boolean;
massiv:array[1..100] of integer;
kol_prostih:integer;
begin
//...программа
kol_prostih:=0;
for j:=1 to N do
begin
prostoe:=true;
for i:=1 to a do
if ( (a mod i =0) and (i<>1) and (i<>a) )
then prostoe=false;
if prostoe then inc(kol_prostih);
end;
//..программа
end;

Проверка, как видно, в одну строчку буквально:D
Заморачиваться с корнями смысла не вижу, ибо на быстродействие программы снижение числа итераций цикла здесь практтически не влияет) (в смысле - не убыстряет процесс :D )
 

sami

Местный
да кстать... причём ошибку выдаёт он мне при самом ещё вводе чисел в массив..(
масив же так задаётся??
for i=1 to 50
input A(i)
next i
Нужен явный DIM A(50)

Заморачиваться с корнями смысла не вижу, ибо на быстродействие программы снижение числа итераций цикла здесь практтически не влияет) (в смысле - не убыстряет процесс :D )
Ну какже. Влияет. Другое дело, что и вычисление квадратного корня тоже отнимает время и на малых числах это время может превышать время проверки без вычисления корня. Например, извлечь корень из 100 будет дороже, чем увидеть что 100 делится на 2 без остатка.
 

sami

Местный
У меня предложение. Давайте будем оформлять код тегом [­code]
Вот так
[­code]DIM A(50)[­/code]
результат
Код:
DIM A(50)
 

Cttacutejib

Пользователь
to sami: ok) и кста.. если уж задаём массив но наверно правильнее задать его
Код:
dim a(50) as integer

не по сабжу) кто писал егэ?) как написали?)
 

Ole4k@

Новичок
Писали)) и написали))
90 баллов, считаю для себя отличным результатом, т.к. готовиться начала только в марте
 

Q_star

Новичок
Заблокирован
II. Световое табло состоит из лампочек. Каждая лампочка может находиться в одном из трех состояний («включено», «выключено» или «мигает». Какое наименьшее количество лампочек должно находиться на табло, чтобы с его помощью можно было передать 18 различных сигналов?

Требует понимания существования систем счисления с любыми основаниями и принципов кодирования такими сигналами. В данном случае — троичной системы.
Средний школьник, как мне кажется, его не решит. Можно решать и перебором все вариантов и их подсчетом, но это долго и велик риск ошибиться.

3^3=27)) вроде как 4 лампочки должно быть (считая нулевую ))) ), но кто сказал, что надор записывать от 1-го по 18-ое состояние.
Оставляем 3 лампочки, 24 состояния всеравно передадим (а 2 уже никак не катет))) )

Так что просто иметь представление о СС и перебирать-то особо неччего))
 

notacat

Местный
подниму тему, понадобился репетитор по информатике для подготовки к ЕГЭ. 11 класс, девушка. Если кто-то из присутствующих, кто уже этим занимался, согласен - напишите мне в личку, договоримся. Или буду благодарна, если кого-нибудь порекомендуете (тоже лучше в личку, может человек не жаждет славы)
 
Сверху