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; }
|
Два простых числа называются "близнецами", если они отличаются друг от друга на 2 ( например числа 41 и 43 - "близнецы"). Найти всех "близнецов" не превосходящих N (N < 10000).
В этой программе мы использовали функцию проверки числа на простоту, которую разработали в программе 2.16b (мы теперь всегда можем ее использовать, где нам понадобится). Начиная с i =5 (строка 21) через 6 будем проверять на простоту пары чисел i и i + 2 ( все по формуле 6*k +/- 1). Если оба числа простые (строка 24), то выводим их на экран.