a, Tìm ra các cặp số tự nhiên a,b sao cho a+b=N và a,b là các số nguyên tố
b, In ra các số tự nhiên P không lớn hơn N thỏa tính chất: P là số nguyên tố và tổng các chữ số của P cũng là số nguyên tố
c, Các cặp số tự nhiên a,b nhỏ hơn N và chúng là cặp số nguyên tố tương đương. Hai số a,b được gọi là nguyên tố tương đương nếu mọi ước nguyên tố của số này đều là ước của số kia và ngược lại.
Quảng cáo
2 câu trả lời 379
program PrimeNumbers;
function IsPrime(num: Integer): Boolean;
var
i: Integer;
begin
if num < 2 then
Exit(False);
for i := 2 to Trunc(Sqrt(num)) do
begin
if num mod i = 0 then
Exit(False);
end;
Exit(True);
end;
function IsSumPrimeDigits(num: Integer): Boolean;
var
sumDigits: Integer;
digit: Integer;
begin
sumDigits := 0;
while num > 0 do
begin
digit := num mod 10;
sumDigits := sumDigits + digit;
num := num div 10;
end;
Exit(IsPrime(sumDigits));
end;
function AreEquivalentPrimes(a, b: Integer): Boolean;
var
i: Integer;
begin
if a = b then
Exit(True);
for i := 2 to Trunc(Sqrt(a)) do
begin
if (a mod i = 0) and (b mod i = 0) then
Exit(False);
end;
Exit(True);
end;
procedure FindPrimePairs(N: Integer);
var
a, b: Integer;
begin
writeln('Cac cap so nguyen to a, b sao cho a + b = ', N, ':');
for a := 2 to N div 2 do
begin
b := N - a;
if IsPrime(a) and IsPrime(b) then
writeln(a, ' + ', b);
end;
end;
procedure PrintPrimeNumbersWithSumPrimeDigits(N: Integer);
var
P: Integer;
begin
writeln('Cac so nguyen to P nho hon hoac bang ', N, ' thoa tinh chat tong cac chu so cung la so nguyen to:');
for P := 2 to N do
begin
if IsPrime(P) and IsSumPrimeDigits(P) then
writeln(P);
end;
end;
procedure FindEquivalentPrimePairs(N: Integer);
var
a, b: Integer;
begin
writeln('Cac cap so nguyen to a, b nho hon ', N, ' va nguyen to tuong duong:');
for a := 2 to N do
begin
for b := a + 1 to N do
begin
if IsPrime(a) and IsPrime(b) and AreEquivalentPrimes(a, b) then
writeln(a, ', ', b);
end;
end;
end;
var
N: Integer;
begin
write('Nhap mot so tu nhien N: ');
readln(N);
FindPrimePairs(N);
writeln;
PrintPrimeNumbersWithSumPrimeDigits(N);
writeln;
FindEquivalentPrimePairs(N);
end.
Program PrimeNumbers;
function IsPrime(num: Integer): Boolean;
var
i: Integer;
begin
if num < 2 then
Exit(False);
for i := 2 to Trunc(Sqrt(num)) do
begin
if num mod i = 0 then
Exit(False);
end;
Exit(True);
end;
function IsSumPrimeDigits(num: Integer): Boolean;
var
sumDigits: Integer;
digit: Integer;
begin
sumDigits := 0;
while num > 0 do
begin
digit := num mod 10;
sumDigits := sumDigits + digit;
num := num div 10;
end;
Exit(IsPrime(sumDigits));
end;
function AreEquivalentPrimes(a, b: Integer): Boolean;
var
i: Integer;
begin
if a = b then
Exit(True);
for i := 2 to Trunc(Sqrt(a)) do
begin
if (a mod i = 0) and (b mod i = 0) then
Exit(False);
end;
Exit(True);
end;
procedure FindPrimePairs(N: Integer);
var
a, b: Integer;
begin
writeln('Cac cap so nguyen to a, b sao cho a + b = ', N, ':');
for a := 2 to N div 2 do
begin
b := N - a;
if IsPrime(a) and IsPrime(b) then
writeln(a, ' + ', b);
end;
end;
procedure PrintPrimeNumbersWithSumPrimeDigits(N: Integer);
var
P: Integer;
begin
writeln('Cac so nguyen to P nho hon hoac bang ', N, ' thoa tinh chat tong cac chu so cung la so nguyen to:');
for P := 2 to N do
begin
if IsPrime(P) and IsSumPrimeDigits(P) then
writeln(P);
end;
end;
procedure FindEquivalentPrimePairs(N: Integer);
var
a, b: Integer;
begin
writeln('Cac cap so nguyen to a, b nho hon ', N, ' va nguyen to tuong duong:');
for a := 2 to N do
begin
for b := a + 1 to N do
begin
if IsPrime(a) and IsPrime(b) and AreEquivalentPrimes(a, b) then
writeln(a, ', ', b);
end;
end;
end;
var
N: Integer;
begin
write('Nhap mot so tu nhien N: ');
readln(N);
FindPrimePairs(N);
writeln;
PrintPrimeNumbersWithSumPrimeDigits(N);
writeln;
FindEquivalentPrimePairs(N);
end.
Quảng cáo
Bạn cần hỏi gì?
Câu hỏi hot cùng chủ đề
-
Đã trả lời bởi chuyên gia
38880 -
Hỏi từ APP VIETJACK28217
