Mạng máy tính và internet

Bạn chưa đăng nhập. Vui lòng đăng nhập để hỏi bài
helpme

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

Nguyễn Lê Phước Thịnh
11 tháng 5 2020 lúc 14:39

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.

Minh Lệ
12 tháng 5 2020 lúc 16:23

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.

Đăng Minh Trần
19 tháng 9 lúc 21:35

#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;
}


Các câu hỏi tương tự
hoàng đá thủ
Xem chi tiết
helpme
Xem chi tiết
hoàng đá thủ
Xem chi tiết
Nhật Nguyễn
Xem chi tiết
Doãn Hoài Trang
Xem chi tiết
helpme
Xem chi tiết
Đoàn Thị Linh Chi
Xem chi tiết
Đoàn Thị Linh Chi
Xem chi tiết
Doãn Hoài Trang
Xem chi tiết