- Теория:
- Алгоритмы:
- Числа:
|
ГЛАВА IV
ЗАДАЧИ С РЕШЕНИЯМИ
Числа близнецы
|
1. Найти все простые числа - близнецы (пример: 3 и 5, 5 и 7 и т.д.) в интервале от 3 до 100.
2. С клавиатуры вводятся пять пар чисел. Найти количество пар близнецов.
3. Вывести на экран 5 случайных пар двузначных чисел близнецов.
4. Проверить, являются ли первая и последняя цифры случайного числа парой чисел - близнецов. Интервал для числа задается с клавиатуры.
5. Найти сумму всех двузначных чисел близнецов.
|
1. Найти все простые числа - близнецы (пример: 3 и 5, 5 и 7 и т.д.) в интервале от 3 до 100.
Ответ:
числа 3 и 5 близнецы
числа 5 и 7 близнецы
числа 11 и 13 близнецы
числа 17 и 19 близнецы
числа 29 и 31 близнецы
числа 41 и 43 близнецы
числа 59 и 61 близнецы
числа 71 и 73 близнецы.
program bliz_01;
uses crt;
var
i, ii, d1, d2 : integer;
k, k1: integer;
{i - первое число;
ii - второе число;
d1, d2 -
делители для первого и второго числа
k, k1 - количество делителей для первого и второго числа}
begin
clrscr;
for i:=3 to 100 do {i - младшее число пары}
begin
k:=0; {поиск количества делителей младшего числа}
for d1:=1 to i do
if (i mod d1)=0 then
inc(k);
ii:=i+2; {ii - старшее число пары}
k1:=0; {поиск количества делителей старшего числа}
for d2:=1 to ii do
if (ii mod d2)=0 then
inc(k1);
if (k=2) and (k1=2) then
{если в обоих случаях количество делителей равно 2, то пара чисел - близнецы}
writeln ('числа ',i, ' и ',ii, ' близнецы');
end;
end.
|
2. С клавиатуры вводятся пять пар чисел. Найти количество пар близнецов.
program bliz_02;
uses crt;
var
i,j,a,b,k, kol1, kol2:integer;
begin
clrscr;
kol:=0; i:=0;
for i:=1 to 5 do
begin
write('a=');
read(a); {ввод проверяемой пары}
write('b=');
read(b);
kol1:=0; kol2:=0;
for j:=1 to a do if a mod j=0 then inc(kol1);
for j:=1 to b do if b mod j=0 then inc(kol2);
if (kol1=2) and (kol2=2) and (abs(a-b)=2) then inc(k); {если количество делителей каждого числа равно 2, и сами числа отличаются на 2, то они - близнецы}
end;
writeln(k);
end.
|
3. Вывести на экран 5 случайных пар двузначных чисел близнецов.
Ответ:
17 19
59 61
59 61
11 13
41 43
program bliz_03;
uses crt;
var a,kd,kd2,i,f:integer;
begin
clrscr;
randomize;
i:=0;
while i<5 do
begin
a:=random (100-10+1)+10;
if a<=98 then
begin
kd:=2;
kd2:=2;
for f:=2 to (a+1) do
begin
if (a mod f=0) and (a< >f) then inc(kd);
if ((a+2) mod f=0) then inc(kd2);
end;
if (kd=2) and (kd2=2) then begin writeln (a,' ',a+2); inc (i); end;
end;
end;
end.
|
4. Проверить, являются ли первая и последняя цифры случайного числа парой чисел - близнецов. Интервал для числа задается с клавиатуры.
Ответ:
m=304
n=306
Первая и последняя цифры 304 - не близнецы.
или
m=304
n=306
Первая и последняя цифры 305 - близнецы
program bliz_04;
uses crt;
var m,n,ch, ch1, x,xx,kd1, kd2, del: integer;
{m,n - интервал;
ch - число из этого интервала;
ch1 - дубликат числа;
x, xx - первая и последняя цифры числа ch;
kd1, kd2 - количество делителей первой и последней цифр, как чисел;
del - параметр делителей}
begin;
clrscr; randomize;
write('m='); readln (m);
write('n='); readln (n);
ch:=random(n-m)+m; {определили проверяемое число}
xx:=ch mod 10; {нашли последнюю цифру числа ch}
kd1:=0;
for del:=1 to xx do
if xx mod del=0 then inc(kd1); {kd1 - количество делителей последней цифры}
ch1:=ch; {создали дубликат исходного числа}
while ch< >0 do {цикл для нахождения первой цифры числа ch}
begin
x:=ch mod 10;
ch:=ch div 10
end;
kd2:=0;
for del:=1 to x do
if x mod del=0 then inc(kd2);{kd2 - количество делителей первой цифры }
if (kd1=2) and (kd2=2) and (abs(x-xx)=2) then write('Первая и последняя цифры ',ch1,' - близнецы')
else write('Первая и последняя цифры ',ch1,' - не близнецы');
end.
|
5. Найти сумму всех двузначных чисел близнецов.
Ответ:
числа 11 и 13 близнецы
числа 17 и 19 близнецы
числа 29 и 31 близнецы
числа 41 и 43 близнецы
числа 59 и 61 близнецы
числа 71 и 73 близнецы
sum=468
program bliz_05;
uses crt;
var
i, ii, d1, d2, sum: integer;
k, k1: integer;
{i - первое число;
ii - второе число;
d1, d2 -
делители для первого и второго числа;
sum - сумма всех чисел близнецов;
k, k1 - количество делителей для первого и второго числа}
begin
clrscr; sum:=0;
for i:=10 to 99 do {i - младшее число пары}
begin
k:=0; {поиск количества делителей младшего числа}
for d1:=1 to i do
if (i mod d1)=0 then
inc(k);
ii:=i+2; {ii - старшее число пары}
k1:=0; {поиск количества делителей старшего числа}
for d2:=1 to ii do
if (ii mod d2)=0 then
inc(k1);
if (k=2) and (k1=2) then {если в обоих случаях количество делителей равно 2, то пара чисел - близнецы}
begin
writeln ('числа ',i, ' и ',ii, ' близнецы');
sum:= sum+i+ii
end;
end;
writeln('sum=',sum);
end.
|
|
|
|
|
|
|