Câu 1:
uses crt;
var n,i,dem,j,kt1,kt2,a,b,kt:integer;
begin
clrscr;
write('Nhap n='); readln(n);
dem:=0;
if n mod 2=1 then
begin
a:=2;
b:=n-a;
kt:=0;
for i:=2 to trunc(sqrt(b)) do
if b mod i=0 then kt:=1;
if kt=0 then inc(dem);
end
else begin
for i:=2 to n div 2 do
begin
a:=i;
b:=n-i;
kt1:=0;
kt2:=0;
for j:=2 to trunc(sqrt(a)) do
if a mod j=0 then kt1:=1;
for j:=2 to trunc(sqrt(b)) do
if b mod j=0 then kt2:=1;
if (kt1=0) and (kt2=0) then inc(dem);
end;
end;
writeln('So cach phan tich ',n,' thanh tong hai so nguyen to la: ',dem);
readln;
end.
Câu 2:
uses crt;
var n,x:integer;
{-----------------ham-kiem-tra-nguyen-to-----------------}
function ktnt(x:integer):boolean;
var kt:boolean;
i:integer;
begin
kt:=true;
for i:=2 to trunc(sqrt(x)) do
if x mod i=0 then
begin
kt:=false;
break;
end;
if kt=true then ktnt:=true
else ktnt:=false;
end;
{---------------ham-kiem-tra-so-doi-xung---------------}
function ktdx(x:integer):boolean;
var kt:boolean;
d,i:integer;
st:string;
begin
str(x,st);
d:=length(st);
kt:=true;
for i:=1 to d do
if st[i]<>st[d-i+1] then
begin
kt:=false;
break;
end;
if kt=true then ktdx:=true
else ktdx:=false;
end;
{--------------chuong-trinh-chinh---------------}
begin
clrscr;
repeat
write('Nhap n='); readln(n);
until n>0;
if (ktnt(n)=true) and (ktdx(n)=true) then writeln(n,' la so nguyen to doi xung')
else writeln(n,' khong la so nguyen to doi xung');
x:=n+1;
repeat
x:=x+1;
until (ktnt(x)=true) and (ktdx(x)=true);
writeln('So nguyen to doi xung nho nhat lon hon ',n,' la: ',x);
readln;
end.
bài 1;
const
fi='phantich.inp'
fo='phantich.out'
var f,g:text;i,n,d:longint;
function nt(n:longint):boolean;
var i:longint;
begin
if (n<2) then exit (false);
for i:=2 to trunc(sqrt(n)) do
if (n mod i=0) then exit (false);
exit (true);
end;
begin
assign(f,fi);reset(f);
assign(g,fo);rewrite(g);
readln(f,n);
d:=0;
for i:=1 to n div 2 do
if nt(i) and nt(n-i) then inc(d);
writeln(g,'co ',d,' cach phan tich');
close(f);close(g);
end.
bài 2:
const
fi='primenumber.inp'
fo='primenumber.out'
var f,g:text;n:longint;
function nt(n:longint):boolean;
var i:longint;
begin
if (n<2) then exit (false);
for i:=2 to trunc(sqrt(n)) do
if (n mod i=0) then exit (false);
exit (true);
end;
function check(n:longint):boolean;
var s,m:longint;
begin
s:=0;m:=n;
while (n>0) do
begin
s:=s*10+(n mod 10);
n:=n div 10;
end;
if (s=m) and (nt(s)=true) then exit (true);
exit (false);
end;
begin
assign(f,fi);reset(f);
assign(g,fo);rewrite(g);
readln(f,n);
if check(n) then writeln(g,'la so nguyen to doi xung') else
writeln(g,'khong la so nguyen to doi xung');
repeat
inc(n);
until (check(n)=true);
writeln(g,'so do la : ',n);
close(f);close(g);
end.