Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Работа с простой переменной. алгоритмы целочисленной арифметики
Цель работы: освоить работу с простой переменной и алгоритмами их обработки при решении задач целочисленной арифметики.
Типовые алгоритмы обработки простой переменной
Рассмотрим некоторые типовые алгоритмы обработки простой переменной, на базе которых решается множество задач, некоторые из них в дальнейшем будут рассмотрены. Положим, что в декларативной части программы описаны следующие переменные: number, number1, number2 - целые числа, подлежащие обработке; temp - переменная для хранения цифры числа; delit делители числа; flag переменная логического типа, которая используется для досрочного выхода из цикла. Для выделения цифры из числа будем использовать целочисленные операции div (целая часть) и mod (целый остаток).
1. Выделение цифр в числе
Реализация:
readln(number);
while number<>0 do
begin
temp:=number mod 10; {выделение цифры из числа}
number:=number div 10; {уменьшение числа на один разряд}
end;
2. Нахождение делителей числа
Реализация:
readln(number);
write( делители числа: );
for delit:=2 to number div 2 do
if number mod delit=0 then write(delit, );
3. Проверка на простоту
Простым является число, которое имеет только два делителя (1 и само себя). Для того чтобы определить является ли число простым, можно подсчитать количество делителей, для этого нужно использовать типовой алгоритм нахождение делителей числа, но можно использовать и более оптимальный алгоритм, который также основан на предыдущем алгоритме.
Реализация:
writeln(Введите целое число);
readln(number);
flag:= true; {предположим, что число простое}
delit:=2;
while flag and (delit< =number div 2) do
if number mod delit=0 then flag:=false
else delit:=delit+1;
if flag then writeln (число простое)
else writeln (число составное);
4. Нахождение наибольшего общего делителя (НОД) двух чисел
Реализация:
writeln(Введите два целых числа);
readln(number1, number2);
while number1<> number2 do
if number1> number2 then number1:=number1-number2
else number2:=number2-number1;
writeln (НОД чисел = , number1 );
Задания для самостоятельного решения.
Вариант 1.
Вариант 2.
Вариант 3.
Вариант 4.
Вариант 5.
Вариант 6.
Вариант 7.
Вариант 8.
Вариант 9.
Вариант 10.
Контрольные вопросы:
Чему будет равно значение переменной с в результате выполнения последовательности команд присваивания?
с:=12; c:=6+c div 3*2;
Чему будет равно значение переменной t в результате выполнения последовательности команд присваивания?
r:=7; t:=3; t:=r+t; r:=t-r; t:=t-r;
Сколько раз выполнится тело цикла во фрагменте алгоритма:
b:=true; x:=64;
while b do begin
b:=(x>=4);
x:=x div 6+2
end;
4. Сколько раз выполнится тело цикла во фрагменте алгоритма:
q:=27; p:=36;
while q div 5= p div 7 do begin
q:=q+2;
p:=p+3
end;
5. Укажите, чему будет равно значение v после выполнения фрагмента алгоритма, если вводится целое значение n, равное 125...
с:=100; v:=0;
while n>0 do begin
v:=v+n div c;
n:=n mod c;
c:=с div 10
end;
6. Вычислите результат выполнения фрагмента алгоритма:
n:=10;
s:=0;
for i:=1 to n div 2 do
s:=s+ n mod i;
7. Вычислите результат выполнения фрагмента алгоритма:
n:=19;
s:=0;
for i:= 2 to n mod 7 do begin
s:=s+ n div i;
n:= n div 2;
end;
8. Какую операцию целочисленного деления необходимо использовать для получения цифры числа?
9. Почему целесообразнее выделять цифры из числа справа на лево, а не слева на право?
10. Какой алгоритм необходимо применить, если все-таки цифры из заданного числа выделять слева на право?