Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Примеры решения задач. Задача 1. Составить программу, которая бы проверяла, являются ли три числа взаимно простыми.






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

Решение

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.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.