iİnformatikanın məktəbdə tədrisi

2-18r

  Два простых числа называются "близнецами", если они отличаются друг от друга на 2 ( например числа  41 и 43  -  "близнецы"). Найти всех "близнецов"  не превосходящих  N (N < 10000).

В этой программе мы использовали функцию проверки числа на простоту, которую разработали в программе 2.16b (мы теперь всегда можем ее использовать, где нам понадобится). Начиная с i =5 (строка 21) через 6 будем проверять на простоту пары чисел  i и i + 2 ( все по формуле 6*k +/- 1). Если оба числа простые (строка 24), то выводим их на экран.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

Program A2_18;

Var

  n,i:integer;

 

Function checkprost(n:integer):integer;

  Var  k,p: integer;

 begin

    if (n mod 3=0) then checkprost:=0

                    else

   begin

     p:=2; k:=5;

     while(k*k<=n) and (n mod k<>0) do

     begin k:=k+p; p:=6-p; end;

     if (k*k>n) then checkprost:=1

                else checkprost:=0;

   end

 end;

 

 begin

   readln(n);

    i:=5;

    while (i<n) do

      begin

        if (checkprost(i)=1) and (checkprost(i+2)=1)

 then       write('(',i,',',i+2,') ');

        i:=i+6;

      end;

    writeln;

    readln;

 end.

// Program A2.18;

#include <iostream>

 

int checkprost(int n)

{  int   k=5,p=2;

  if(n%3==0)return 0;

  while(k*k<=n && n%k!=0){k=k+p; p=6-p;}

  if(k*k>n) return 1;

           else return 0;

}

 

using namespace std;

 

 

 

 

 

int main()

{ int n;

cin>>n;

 

for (int i=5;i<n;i+=6)

    if (checkprost(i) && checkprost(i+2)) 

      cout<<"("<<i<<","<<i+2<<") ";

  cout<<endl;

  return 0;

}