
Search

Support DFF
If you benefit from the website, in terms of
knowledge, entertainment value, or something otherwise useful,
consider making a donation via PayPal to help defray the
costs. (No PayPal account necessary to donate via credit
card.) Transaction is secure.
If you shop at Amazon anyway,
consider using this link. We receive a few cents from each purchase.
Thanks.

Contact
Feedback:
Send an e-mail with your
comments about this program (or anything else).

|
| |
Problem Description
The fourth in the "T-Shirt" series:
Back of T-Shirt: "Smallest prime integer that remains prime
when added to its reversal"
Front: __ __ __ ?
Background & Techniques
Another beginner's level program that searches for the
required number. If the required prime is a three digit number (it is),
then we are searching for the smallest prime number, abc, such that abc+cba is
prime.
There are about 30 user written lines of code here
equally divided among three routines:
- The IsPrime function returns true if the
integer passed is prime, false if not prime.
- The Reverse function returns an integer with
the digits of the input number reversed.
- And the SolveBtnCliick procedure, called when
the user clicks the Solve button, loops with a control variable
ranging from 13 to 999. Each value is passed to IsPrime,
if result is true the digits are reversed using Reverse function and
the sum is passed to IsPrime. Valid results are displayed
in a Listbox.
Here is the entire source code listing for the three
subroutines:
{******* IsPrime *******}
function IsPrime(n:integer):boolean; {Check is a number is prime}
var i:integer;
begin
result:=true;
for i:=2 to trunc(sqrt(n)) do {no need to check higher}
if i*(i div n)i= n then {is i a factor of n?}
begin
result:=false;
break;
end;
end;
{********* Reverse ********}
function Reverse(n:integer):integer; {reverse the digits of an integer}
begin
result:=0;
while n>0 do
begin
result:=10*result + n mod 10;
n:=n div 10;
end;
end;
{********** SolveBtnClick ********}
procedure TForm1.SolveBtnClick(Sender: TObject);
var i,r:integer;
begin
for i:= 13 to 999 do
begin
if IsPrime(i) then
begin
r:=Reverse(i);
if
IsPrime(i+r)
then listbox1.items.add(inttostr(i) +' + '+inttostr(r)+' = '+inttostr(r+i));
end;
end;
end;
Running/Exploring the Program
Suggestions for Further Explorations
 |
Smallest
Palindromic prime? (There's an IsPalindrome function in
T-Shirt #3 program) |
 |
Smallest palindromic
prime which remains prime when added to its reversal? |
| Originally posted: May 30, 2002 |
Modified:May 18, 2009
|
|