Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Топ:
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Интересное:
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Дисциплины:
2020-12-06 | 239 |
5.00
из
|
Заказать работу |
|
|
Решение
Program Problem1;
uses WinCrt;
var
a, b, c, k: integer;
{----------------------------------------------------------------------------------------}
Procedure nod(a, b: integer; var n: integer);
var
r: integer;
begin
repeat
r:= a mod b;
a:= b; b:= r
until b = 0;
n:= a
end;
{---------------------------------------------------------------------------------------}
begin
write(' Введите три натуральных числа '); readln(a, b, c);
nod(a, b, k);
a:= k; b:= c;
nod(a, b, k);
if k = 1 then writeln(' Числа взаимно простые ')
else writeln('Числа не взаимно простые')
end.
Задача 2. Составить программу, которая устанавливает, какие числа из заданного промежутка [a; b] можно представить в виде суммы двух квадратов целых чисел?
Решение
Program Problem2;
uses WinCrt;
var
a, b, i: integer;
{---------------------------------------------------------------------------------------}
Procedure to_square(n: integer);
label 1;
var
a, b, k: integer;
begin
a:= 1; k:= 1;
while a*a + 1 <= n do
begin
k:= k + 1;
a:= a + 1
end;
for a:= 1 to k do
for b:= 1 to a do
if a*a + b*b = n
then
begin
writeln(n, '=', a, '*', a, '+', b,'*', b); goto 1
end;
1: end;
{----------------------------------------------------------------------------------------}
begin
write(' Введите начало промежутка '); readln(a);
write('Введите конец промежутка '); readln(b);
write('Числа, которые можно представить в виде суммы ');
writeln(' квадратов следующих чисел ');
for i:= a to b do to_square(i);
end.
Задача 3. Составить программу нахождения и вывода на экран всех простых чисел из заданного промежутка [n; m]. (Массивы не использовать.)
Решение
Program Problem3; { Простые числа из промежутка [n; m] }
uses WinCrt;
var
n, m, i: integer;
{----------------------------------------------------------------------------------------}
Procedure probleme_number(p: integer);
var
i, k: integer;
begin
if p=2 then write(p, ' ')
else if p mod 2 <> 0
|
then
begin
i:= 3; k:= 0;
while i <= trunc(sqrt(p)) do
begin
if p mod i = 0 then k:= k + 1;
i:= i + 2
end;
if k = 0 then write(p, ' ')
end
end;
{----------------------------------------------------------------------------------------}
begin
write(' Введите левую границу промежутка > 1 '); readln(n);
write('Введите правую границу промежутка '); readln(m);
writeln('Простые числа из промежутка [', n, ' ', m, ']');
for i:= n to m do probleme_number(i);
writeln
end.
Задача 4. Французский физик М. Мерсен (1588 - 1648) заметил, что многие простые числа имеют вид
P - 1, где p также простое число. Все числа такого вида называются числами Мерсена. Соста-вить программу, которая находит числа Мерсена на заданном промежутке.
Решение
Program Problem4; { Числа Мерсена }
uses WinCrt;
var
b, p, p1, m, m1, n, n1, i: longint;
{----------------------------------------------------------------------------------------}
Procedure Probleme_number(p: longint; var v: longint);
var
i, k: longint;
begin
if p = 2 then v:= p
else if p mod 2 <> 0
then
begin
i:= 3; k:= 0;
while i <= trunc(sqrt(p)) do
begin
if p mod i = 0 then k:= k + 1;
i:= i + 2
end;
if k = 0 then v:= p
end
end;
{----------------------------------------------------------------------------------------}
Procedure extent(a, n: integer; var s: longint);
var
i: integer;
begin
s:= 1;
for i:= 1 to n do s:= s*a
end;
{---------------------------------------------------------------------------------------}
begin
write('Введите правую гран. знач. показ. степ. '); readln(b);
write ('Числа Мерсена: ');
for i:= 2 to b do
begin
probleme_number(i, p);
|
if p <> p1 then extent(2, p, m);
if m <> m1 then probleme_number(m - 1, n);
if n <> n1 then write(n,'; ');
n1:= n; p1:= p; m1:= m
end;
writeln
end.
Задача 5. Напишите программу, которая для каждого из целых чисел от 1 до n напечатает все его делители. Например, 1 5 7 35 являются делителями числа 35. Аналогичный список делителей должен быть напечатан для каждого из чисел от 1 до заданного числа n.
Решение
Program Problem 5;
uses WinCrt;
var
i, n: integer;
{----------------------------------------------------------------------------------------}
Procedure math_divisor(n: integer);
var
d: integer;
begin
for d:= 1 to n div 2 do
if n mod d=0 then write(d, ' ');
writeln(n)
end;
{----------------------------------------------------------------------------------------}
begin
write(' Введите правую границу промежутка '); readln(n);
for i:= 1 to n do
begin
write('Делители числа ', i, ' следующие: ');
math_divisor(i)
end
end.
Задача 6. Нумерация книжных страниц. В книге n страниц. Составим программу, которая будет находить, сколько цифр понадобится для того, чтобы занумеровать все страницы книги.
Решение
Математическое решение рассмотрим на частном примере, а потом сделаем общий вывод.
Пусть нам требуется определить число цифр для нумерации 357 страниц.
Естественными рассуждения будут такими: однозначных цифр 9, значит они пронумеруют 9 страниц; двузначных чисел 90 - они нумеруют 90 страниц и используют 90 . 2 = 180 цифр; трехзначных чисел 900 - они пронумеруют 900 страниц и используют 2700 цифр. Следовательно, для нумерации данных 357 страниц потребуются все однозначные и двузначные числа и часть трехзначных. Чтобы узнать, сколько трехзначных чисел потребуется для нумерации, надо из заданного числа вычесть " использованные " однозначные и двузначные числа: 357 - (9 + 90) = 258.
Итак, всего потребуется цифр:
...........
Итого: 9 + 180 + 774 = 963 цифры.
Теперь обобщим наши соображения. Пусть задано число страниц n, которое имеет c цифр. Тогда для нумерации потребуются цифры:
1 - значные; потребуется: 9 1 = 9 цифр;
2 - значные; 90 2 = 180 цифр;
3х - значные; 900 3 = 2700 цифр;
...................................
c-1 -значные; 9....0 . (c-1)... цифр,
а c-значных полностью не хватит, также, как не хватило полностью трехзначных для нумерации 357 страниц.
Чтобы узнать сколько потребуется c-значных цифр, надо из данного числа вычесть все число одно, -дву, -трех,- и т. д., c-1 значные, которые уже использованы: а затем полученный результат умножить на c - значность числа. Сложив израсходованные цифры, мы получим окончательный результат.
|
Попробуем на основе этих рассуждений составить программу.
Program Problem6; { Число цифр для нумерации страниц }
uses WinCrt;
var
n, c: integer;
{----------------------------------------------------------------------------------------}
Procedure number(n: integer; var k: integer);
begin
k:= 0;
repeat
k:= k + 1; n:= n div 10
until n = 0
end;
{----------------------------------------------------------------------------------------}
Procedure Page(n: integer; var z: integer);
var
i, m, c, s: integer;
begin
m:= 9; number(n, c); z:= 0; s:= 0;
for i:= 1 to c - 1 do
begin
z:= z + m*i; { Сумма цифр }
s:= s + m; m:= m*10
end;
z:= z + (n - s)*c {n - s оставшиеся страницы c-значными цифрами}
end;
{----------------------------------------------------------------------------------------}
begin
write('Введите число страниц '); readln(n);
page(n, c);
writeln('Число цифр, необходимых для нумерации ', c)
end.
Задача 7. Счастливые автобусные билеты. Номера автобусных билетов представляют собой шестизначные числа. Счастливым считается тот билет, у которого сумма первых трех цифр равна сумме последних трех цифр. Например, билет 356428 считается счастливым, так как:
3 + 5 + 6 = 4 + 2 + 8 =14.
|
|
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!