![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Примеры решения задач. Задача 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.
|