Cho dãy số A gồm các số nguyên tố 2, 3, 5, 7, .... Ghép hai số nguyên tố cạnh nhau được một dãy số mới 23, 35, 57, ... Trong dãy số mới này có những số là số nguyên tố 23, 57, ... được gọi là dãy các số nguyên tố ghép B. nhập vào 1 số tự nhiên k in ra man hinh so nguyen tố ghép thứ k trong dãy nguyên tố ghép b
nhập 2 ra 57 Số nguyên tố ghép thứ 2 trong dãy số nguyên tố ghép B là 57
làm theo tập tin pascal
uses crt;
const f='ngtoghep.inp';
var d,n,k,kt1,i,j,x,kt2,u,kt:longint;
st1,st2,st:string;
y:integer;
f1:text;
begin
clrscr;
assign(f1,f); reset(f1);
readln(f1,k);
if k>1 then begin
d:=1;
n:=3;
repeat
repeat
kt:=0;
n:=n+2;
for i:=2 to trunc(sqrt(n)) do
if n mod i=0 then kt:=1;
if kt=0 then str(n,st1);
until kt=0;
{----------------------------------------}
repeat
kt:=0;
n:=n+2;
for j:=2 to trunc(sqrt(n)) do
if n mod j=0 then kt:=1;
if kt=0 then str(n,st2);
until kt=0;
{----------------------------------------}
kt:=0;
st:=st1+st2;
val(st,x,y);
for i:=2 to trunc(sqrt(x)) do
if x mod i=0 then kt:=1;
if kt=0 then d:=d+1;
until d=k;
end;
if k=1 then write('so nguyen to ghep thu ',k,' la 23')
else writeln('so nguyen to ghep thu ',k,' la: ',x);
close(f1);
readln;
end.
Trên đề bạn cho test sai rồi. 57 đâu phải là số nguyên tố đâu bạn. Dễ nhìn thấy 5+7=12 chia hết cho 3.Nên trong dãy mới thì không có số 57. Lần sau bạn chú ý cho test đúng bạn nhé.
Program HOC24;
var s,sc,st: string;
a,b: array[1..10000] of string;
c: array[1..10000] of integer;
i,n,k,d2,t,d,d1:longint;
p: integer;
function nt(x: longint): boolean;
var j: longint;
begin
nt:=true;
if (x=2) or (x=3) then exit;
nt:=false;
if (x=1) or (x mod 2=0) or (x mod 3=0) then exit;
j:=5;
while (j<=trunc(sqrt(x))) do
begin
if (x mod j=0) or (x mod (j+2)=0) then exit;
j:=j+6;
end;
nt:=true;
end;
begin
write('Nhap k='); readln(k);
for i:=1 to 30000 do
if nt(i) then
begin
str(i,sc);
inc(d);
a[d]:=sc;
end;
for i:=1 to d do
begin
inc(d1);
b[d1]:=a[i]+a[i+1];
end;
for i:=1 to d1 do
begin
val(b[i],p);
if nt(p) then begin inc(d2); st:=b[i]; end;
if k=d2 then break;
end;
write(st);
readln
end.
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
int a[200000001];
vector<int> b; vector<int> d;
void sang(){
for (int i=2;i<200000000;i++){
a[i]=1;
}
a[0]=a[1]=0;
for (int i=2;i<sqrt(200000000);i++){
if (a[i]){
for (int j=i*i;j<200000000;j+=i) a[j]=0;
}
}
}
bool san(int n)
{
if (n < 2)
return false;
for (int x = 2; x <= sqrt(n); x++)
{
if (n % x == 0)
{
return false;
}
}
return true;
}
int main(int n)
{
sang();
int l;cin>>l;
for (int i=0;i<=200000000;i++){
if(a[i]) b.push_back(i);}
for (int k=0;k<=sqrt(200000000);k+=2){
string g=to_string(b[k])+ to_string(b[k + 1]);
int c=stoll(g);
for (int x=0;x<n;x++){
if(san(c)) d.push_back(c);
}
}
cout<<d[l - 1];
return 0;
}