ВХОД

МЕТОДИЧЕСКИЕ РАЗРАБОТКИ ПО КУРСУ ИНФОРМАТИКИ

"ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PASCAL"

Начало > Глава II. Простые, Совершенные > Задачи с решениями

ГЛАВА II

ЗАДАЧИ С РЕШЕНИЯМИ

Простые числа



1. Найти количество простых чисел в интервале [10, 1000].
  Переход
Блок-схема

2. Найти простые числа в заданном интервале.
  Переход
Блок-схема

3. Найти двадцатое простое число.
  Переход
Блок-схема

4. Найти удвоенное десятое простое число.
  Переход
Блок-схема

5. Найти все простые двузначные числа, заканчивающиесяна цифру 3.
  Переход (первый вариант решения)
Блок-схема
Переход (второй вариант решения)
Блок-схема

6. С клавиатуры вводятся 5 чисел. Найти количество простых, трехзначных.
  Переход.
Блок-схема

7. Найти первое простое число, сумма цифр которого больше 10.
  Переход
Блок-схема

8. С клавиатуры вводятся 5 чисел. Найти количество простых чисел, сумма цифр которых меньше 10.
  Переход
Блок-схема

9. Найти первое простое число, сумма цифр которого больше 8, а произведение цифр меньше 10.
  Переход
Блок-схема

1. Найти количество простых чисел в интервале [10, 1000].

Ответ: k=164

program prost_01;
uses crt;
var ch, del, kd, k: integer;

    {ch - проверяемые числа;
    del - делители;
    kd - количество делителей;
    k - количество простых чисел}

begin clrscr;
k:=0;
for ch:=10 to 1000 do {заданный интервал чисел}
    begin
    kd:=0;

    for del:=1 to ch do
      if ch mod del=0 then inc(kd);

    If kd=2 then inc(k)
    end;

write('k=',k);
end.

2. Найти простые числа в заданном интервале.

Ответ:
a=1
b=10
2 3 5 7

program prost_02;
uses crt;
var a, b, ch, del, kd, k: integer;
    {a, b - границы интервала чисел;
    ch - проверяемые числа;
    del - делители;
    kd - количество делителей;
    k - количество простых чисел}
begin
clrscr;
    write('a='); readln(a); {вводим границы интервала чисел}
    write('b='); readln(b);
    k:=0;
    for ch:=a to b do
      begin
      kd:=0; {алгоритм поиска простых чисел}
      for del:=1 to ch do
        if ch mod del=0 then inc(kd);
      If kd=2 then write(ch:5);
      end;
end.

3. Найти двадцатое простое число.

Ответ: k=20 ch=71

program prost_03;
uses crt;
var ch, del, kd, k : integer;

    {ch - проверяемые числа;
    del - делители;
    kd - количество делителей;
    k - счетчик простых чисел}


begin clrscr;
ch:=0; k:=0;
while k<20 do

    begin
    inc(ch) ; {начинаем проверять числа с 1}
    kd:=0;
    for del:=1 to ch do
      if ch mod del=0 then inc(kd);

    If kd=2 then inc(k); {если число простое, то увеличиваем счетчик чисел на 1}
    end;
write('k=',k); writeln('ch=':5,ch);
end.

4. Найти удвоенное десятое простое число.

Ответ: k=10, ch=29, ch*2=58

program prost_04;
uses crt;
var del, kd, k, ch:integer;

    {ch - проверяемые числа;
    del - делители;
    kd - количество делителей;
    k - счетчик простых чисел}

begin clrscr;
ch:=0; k:=0;
while k<10 do
    begin
    ch:=ch+1; kd:=0;
    for del:=1 to ch do
      if ch mod del=0 then inc(kd);

    If kd=2 then inc(k) end;

write('k=':10,k);write('ch=':10,ch); write('ch*2=':10, ch*2);
end.

5.(1) Найти все простые двузначные числа, заканчивающиеся на цифру 3.

Ответ: 13, 23, 43, 53, 73, 83

program prost_05_01; {первый вариант решения}
uses crt;
var ch, kd, del: integer;
begin
    clrscr;
    for ch:=10 to 99 do
      begin
      kd:=0; {алгоритм для нахождения простого числа}
      for del:=1 to ch do
        if ch mod del=0 then inc (kd);
      if (kd=2) and (ch mod 10=3) then writeln (ch);
      end;
    readkey;
end.
5.(2) Найти все простые двузначные числа, заканчивающиеся на цифру 3.

Ответ: 13, 23, 43, 53, 73, 83

program prost_05_02; {второй вариант решения}
uses crt;
var k,kd,ch,del:integer;
begin clrscr;
    for k:=1 to 9 do
      begin
      kd:=0;
      ch:=k*10+3;
      for del:=1 to ch-1 do
        if ch mod del=0 then inc(kd);
      if kd=1 then writeln ('ch=',ch);
      end;
end.

6. С клавиатуры вводятся 5 чисел. Найти количество простых, трехзначных

Ответ может быт такой: 12, 13, 131, 131, 131 kch=3.


program prost_06;
uses crt;
var i, ch, del, kd, kol: integer;

    {i - счетцик цикла;
    ch - число;
    kd - количество делителей;
    del - делители;
    kol - количество чисел}


begin
clrscr;
for i:=1 to 5 do {5 раз будем вводить число с клавиатуры}
    begin
    readln(ch);
    kd:=0; {алгоритм для определения простого числа}
    for del:=1 to ch do
      if ch mod del =0 then inc(kd);

    if (kd=2) and (ch>=100 ) and (ch<=999) then inc (kol);
    end; {число трехзначное, если оно попадает в заданный интервал}

writeln('kol=', kol);
end.

7. Найти первое простое число, сумма цифр которого больше 10.
Ответ: 29

program prost_07;
uses crt;
var ch, num, kd, del, c , sum: integer;
    {ch - проверяемое число;
    num - дубликат числа;
    kd -количество делителей;
    del - делитель;
    c - цифра числа;
    sum - сумма цифр числа}
begin
clrscr;
ch:=1;
while sum <= 10 do
    begin
    num:=ch;

    kd:=0; {алгоритм для определения простого числа}
    for del:=1 to num do
      if num mod del=0 then inc (kd);
    If kd=2 then
      begin {если число простое, то проверка продолжается, иначе начинаем проверять следующее число}

      sum:=0; {алгоритм для нахождения суммы цифр числа}
      while (num< >0) do
        begin
        c:= num mod 10;
        num:=num div 10;
        sum:=sum+c
        end;
      end;
    inc (ch);
    end;
write ( 'Первое простое число, сумма цифр которого больше десяти: ', ch-1);
end.

8. С клавиатуры вводятся 5 чисел. Найти количество простых чисел, сумма цифр которых меньше 10.

Ответ может быть такой: 3, 3, 3, 3, 6 kch = 4


program prost_08 ;
uses crt;
var i, ch, del, kd, S, kol: integer;

    { i - счетцик цикла;
    ch - число;
    kd - количество делителей;
    del - делители;
    S - сумма цифр числа ch;
    kol - количество чисел }


begin
clrscr;
for i:=1 to 5 do {5 раз будем вводить число с клавиатуры}
    begin
    readln(ch);
    kd:=0; {алгоритм для определения простого числа}
    for del:=1 to ch do
      if ch mod del =0 then inc(kd);

    if kd=2 then {если число простое, то проверка продолжается, иначе начинаем проверять следующее число}
      begin
      S:=0;
      while ch < > 0 do {алгоритм для нахождения суммы цифр числа}
        begin
        inc(S, ch mod 10);
        ch:=ch div 10
        end;

      if S < 10 then inc(kol);
      end;
    end;

writeln('kol=', kol);
end.

9. Найти первое простое число, сумма цифр которого больше 8, а произведение цифр меньше 10.

Ответ: 19.


program prost_09;
uses crt ;
var ch,ch1,del,S,P,kd, kch, c : integer;

    {ch - проверяемые числа;
    ch1 - дубликат числа ch для нахождения суммы и произведения его цифр;
    del - делители;
    kd - количество делителей;
    c - цифры;
    S - сумма цифр числа ch;
    P - произведение цифр числа ch}

begin
    clrscr;
    ch:=1;
    repeat
      kd:=0;{алгоритм для определения простого числа}
      For del:=1 to ch do
        if ch mod del =0 then inc (kd);

      S:=0; {алгоритм для нахождения суммы и произведения цифр числа}
      P:=1;
      ch1:=ch;
      while ch1 < >0 do
        begin
        c:=ch1 mod 10;
        ch1:=ch1 div 10;
        S:=S+c;
        P:=P*c;
        end;

      inc(ch);

    until (kd<=2) and (s>8) and (p<10);
    write( 'ch= ' , ch - 1);
End.

 

 

 

 

Copyright ©2011 Nika A.S.
Hosted by uCoz