How to resolve the algorithm Fractran step by step in the PARI/GP programming language
How to resolve the algorithm Fractran step by step in the PARI/GP programming language
Table of Contents
Problem Statement
FRACTRAN is a Turing-complete esoteric programming language invented by the mathematician John Horton Conway. A FRACTRAN program is an ordered list of positive fractions
P
(
f
1
,
f
2
, … ,
f
m
)
{\displaystyle P=(f_{1},f_{2},\ldots ,f_{m})}
, together with an initial positive integer input
n
{\displaystyle n}
.
The program is run by updating the integer
n
{\displaystyle n}
as follows:
Conway gave a program for primes in FRACTRAN: Starting with
n
2
{\displaystyle n=2}
, this FRACTRAN program will change
n
{\displaystyle n}
to
15
2 × ( 15
/
2 )
{\displaystyle 15=2\times (15/2)}
, then
825
15 × ( 55
/
1 )
{\displaystyle 825=15\times (55/1)}
, generating the following sequence of integers: After 2, this sequence contains the following powers of 2: which are the prime powers of 2.
Write a program that reads a list of fractions in a natural format from the keyboard or from a string,
to parse it into a sequence of fractions (i.e. two integers),
and runs the FRACTRAN starting from a provided integer, writing the result at each step.
It is also required that the number of steps is limited (by a parameter easy to find).
Use this program to derive the first 20 or so prime numbers.
For more on how to program FRACTRAN as a universal programming language, see:
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Fractran step by step in the PARI/GP programming language
Source code in the pari/gp programming language
\\ FRACTRAN
\\ 4/27/16 aev
fractran(val,ft,lim)={
my(ftn=#ft,fti,di,L=List(),j=0);
while(val&&j
for(i=1,ftn, fti=ft[i]; di=denominator(fti);
if(val%di==0, break));\\fend i
val= numerator(fti)*val/di; j++);\\wend j
return(Vec(L));
}
{\\ Executing:
my(v=[17/91,78/85,19/51,23/38,29/33,77/29,95/23,77/19,1/17,11/13,13/11,15/14,15/2,55/1]);
print(fractran(2,v,15));
}
You may also check:How to resolve the algorithm Periodic table step by step in the FutureBasic programming language
You may also check:How to resolve the algorithm Function composition step by step in the Mathcad programming language
You may also check:How to resolve the algorithm Short-circuit evaluation step by step in the Swift programming language
You may also check:How to resolve the algorithm Hailstone sequence step by step in the J programming language
You may also check:How to resolve the algorithm Mutual recursion step by step in the BCPL programming language