﻿

# c# parse pdf to xml : Remove metadata from pdf software control cloud windows azure .net class xnumbers-tutorial111-part864

Xnumbers Tutorial
110
Number Theory
Maximum Common Divisor
xMCD(a1, [a2])
MCD(a1, [a2], [a3]...)
Returns the Maximum Common Divisor (also called Greatest Common Divisor, GCD)  of two or
more extended numbers
The arguments "a1" and "a2" may be single numbers or arrays (range). At least, two values
must be input. If "a1" is a range, "a2" may be omitted
Minimum Common Multiple
xMCM(a1, [a2])
MCM(a1, [a2], [a3]...)
Returns the Minimum Common Multiple (also Least Common Multiple, LCM)  of two or more
extended numbers
The arguments "a1" and "a2" may be single numbers or arrays (range). At least, two values
must be input. If "a1" is a range, "a2" may be omitted
Example
Note that LCM may easily overcome the standard precision limit even if its arguments are all in
standard precision.
Remove metadata from pdf - add, remove, update PDF metadata in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Enable VB.NET Users to Read, Write, Edit, Delete and Update PDF Document Metadata
Xnumbers Tutorial
111
Rational Fraction approximation
xFract(x, [Digit_Max])
Fract(x, [ErrMax])
Returns the fractional approximation of a non-integer number x, the functions returns a vector
of two integer numbers, numerator N and denominator D :
x ≈ N / D
The optional parameter ErrMax sets the accuracy of the fraction conversion (default=1E-14).
The function tries to calculate the fraction with the maximum accuracy possible.
The algorithm uses the continued fraction expansion
1
0
1   ,
1
,
1
0
1
0
=
=
=
=
D
D
N
N
1
1
1
1
+
+
= ⋅ ⋅ +
⋅ +
=
i
i
i
i
i
i
i
i
D
a D
D
N
a N
N
Where a
i
are found by the following algorithm:
(
)
1
1
1
1
/
int
+
+
+
+
= − ⋅
=
=
i
i
i
i
i
i
i
i
i
y a
x
y
y
x
x y
a
In the example below  we want to find
the fraction form of  the number  0.126.
The function returns the solution:
N = 63 , D = 500
0.126 ≅ 63 / 500
Often the rational form is not so easy to find, and depends strongly on the precision we want to
reach.
See, for example, the fractions that approximate
2
with increasing precision
Digit
N/D
Error
1.500000000000000
0.08579
1.400000000000000
0.01421
41
29
1.413793103448280
0.00042
99
70
1.414285714285710
7.2E-05
239
169
1.414201183431950
1.2E-05
1393
985
1.414213197969540
3.6E-07
3363
2378
1.414213624894870
6.3E-08
8119
5741
1.414213551646050
1.1E-08
10
47321
33461
1.414213562057320
3.2E-10
11
114243
80782
1.414213562427270
5.4E-11
12
275807
195025
1.414213562363800
9.3E-12
13
1607521
1136689
1.414213562372820
2.8E-13
14
3880899
2744210
1.414213562373140
4.2E-14
15
9369319
6625109
1.414213562373090
1.3E-14
You can regulate the desiderate approximation with the parameter ErrMax
1
from The art of Computer Programming, D.E.Knuth, Vol.2, Addison-Wesley, 1969
VB.NET PDF remove image library: remove, delete images from PDF in
Insert Image to PDF. Image: Remove Image from PDF Page. Image: Copy, Paste, Cut Image in Page. Link: Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
Able to remove a single page from adobe PDF document in VB.NET. Ability to remove consecutive pages from PDF file in VB.NET. Enable
Xnumbers Tutorial
112
Continued Fraction
xFractCont(x, [Digit_Max])
FractCont(x)
These functions perform the continued fraction expansion of a decimal number x
Usually the continued fraction is written in the
compact form  x = [a
0
, a
1
, a
2
, a
3
...]
Each step gives the rational fraction  fi = si / ti ,
where the fractions fi converge to the number x
....
1
1
1
3
2
1
0
+
+
+
+
=
a
a
a
x a
Both the above functions return an array containing the integer values [ai, si, ti].
The algorithm stops when the fraction approximates x with the maximum precision allowed,
that is 10^-15 and 10^-(DgtMax) respectively for the standard and the multiprecision function.
Example. Compute the continued fraction
expansion of the number e
2
= 7.38905...
with standard precision (error < 1E-15)
As we can see, the continued fraction of the
transcendental real number e
2
can be written
as:
e
2
= [7, 2, 1, 1, 3, 18, 5, 1, 1, 6, 30, 8...]
while the correspondent approximating
fractions are
e
≅  15/2 (1.5%),
e
≅  22/3 (0.75%),
e
≅  37/5 (0.15%),
e
≅  133/18 (0.002%),
....
Sometime the continued fraction expansion requires the multiprecision. Expand, for example,
the Ramanujian number
58
π
e
≅ 24591257751.9999998222132414696... with 30 significant
digits
As we can see, the last fraction:  101111070168039846853 / 4111667292  approximates
58
π
e
with a relative error of about 1E-30
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
console application. Able to remove a single page from PDF document. Ability to remove a range of pages from PDF file. Free trial package
String outputFilePath = Program.RootPath + "\\" Remove.pdf"; // Remove password in the input file and output to a new file. int
Xnumbers Tutorial
113
Continued Fraction of Square Root
FractContSqr(n)
This function returns the continued fraction
expansion of the square root of an integer
number
[
]
0
3
2
1
0
...2
, , , ,
a
a a a a a a
n=
....
1
1
1
3
2
1
0
+
+
+
+
=
a
a
a
n a
As known, the expansion is infinite and periodic.
The algorithm stops when it come across into a term double of the first term a
0
This function returns the (m+1) vector [a
0
, a
1
, a
2
,...a
m
]   where am = 2*a
0
Use the ctrl+shift+enter sequence.
Example. Calculate the continued fraction of
77
Therefore the infinite, periodic continued fraction is
[
]
8, 1, 3, 2, 3, 1, 16, 1, 3, 2, 3, 1, 16, 1, 3, 2, 3, 1, 16....
77=
Note that the function returns only the first terms + the period.
Check Prime
Prime(n)
Prime(n) =  "P"  if  n is  prime, or the lowest factor  if n is not prime
Returns "?"  if the function is not able to check it.
Example
prime(134560093) ="P"
prime(134560079)= 89
Next Prime
NextPrime(n)
This function
1
returns the prime number greater than n or "?" if the function is not able to
calculate it
nextprime(9343560093) = 9343560103
C# PDF bookmark Library: add, remove, update PDF bookmarks in C#.
Ability to remove and delete bookmark and outline from PDF document. Merge and split PDF file with bookmark. Save PDF file with bookmark open.
C# PDF remove image library: remove, delete images from PDF in C#.
Insert Image to PDF. Image: Remove Image from PDF Page. Image: Copy, Paste, Cut Image in Page. Link: Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete
Xnumbers Tutorial
114
1
)
(mod
)
(
m
a +b
where a, b integer and m positive integer
Modular Subtraction
xsubmod(a, b, m)
Performs the modular subtraction
)
(mod
)
(
m
a −b
where a, b integer and m positive integer
Modular Multiplication
xmultmod(a, b, m)
Performs the modular multiplication
)
(mod
)
(
m
a⋅b
where a, b integer and m positive integer
Modular Division
xdivmod(a, b, m)
Performs the modular division
)
(mod
( / / )
m
a b
where a, b integer and m positive integer
Remember that the modular division is always possible if, and only, the module m is prime.
Otherwise the division could be impossible. In that case the function returns "?"
Modular Power
xpowmod(a, p, m)
Performs the modular integer power of a
p
That is defined as the remainder of the integer division of a
p
by m
− ⋅
=
m
a
m
r a
p
p
1
Modular function xaddmod, xsubmod, xmultmod, xdivmod appear thanks to the courtesy of John Jones
VB.NET PDF delete text library: delete, remove text from PDF file
projects. Basically, you can use robust APIs to select a PDF page, define the text character position, and remove it from PDF document.
Xnumbers Tutorial
115
Example: compute
9005)
(mod
3
24
xpowmod(3,24,9005) = 3306
It's easy to prove that
3306
)
9005
81 (mod
2824295364
)
9005
3 (mod
24
=
=
When the number a or p become larger it is impossible to compute the integer power directly.
But the function xpowmod can return the correct result.
Examples: compute
)
3001
(mod
12
3939040
It would be impossible to compute all the digits of this power. Using multiprecision we have
xpow(12,3939040) =  1.24575154970238125896669174496E+4250938
This result shows that 12
3939040
has more then 4 million of digits!
Nevertheless the remainder of this impossible division is
xpowmod(12, 3939040,3001) = 947
Examples: Miscellanea of modular function
Observe that m = 1000453 is prime.
Xnumbers Tutorial
116
Perfect Square
xIsSquare(n)
Checks if a number n is a perfect square
xisSquare(1000018092081830116) = TRUE
Because:   1000018092081830116 = 1000009046
2
xisSquare(2000018092081830116) = FALSE
Check odd/even
xIsOdd (n)
Checks if a number n is odd (TRUE) or even (FALSE)
Check Integer
xIsInteger(x)
Checks if a number x is integer
Xnumbers Tutorial
117
Macro - Factorize
Factorize()
This macro factorize a number of active cell returning the list of prime number and their
exponents
k
e
k
e
e
e
p
n p p p p p
...
3
3
2
2
1
1
=
Select the cell contains the number you want to factorize and the run the macro Factorize from
the menu or Prime... > Factorize
Example. Assume to have in the cell A2 the following extended number
13320493696756339619246691430
Click “copy” if you want to copy the list in the worksheet, starting from the cell just below cell
A2.
This macro uses the trial division method with the prime table generated by the Eratostene's
sieve algorithm
This method is adapt for numbers having factors no more that 6 digts max. For higher factor
the elaboration time becames extremely long and it cames usefull a second factorization
method, the so called Pollard rho algorithm, for craking a number into two lower factors (not
necessary prime). Each factors, if not prime, can be factorized separately with the trial division
method.
Example. The number
18446744073709551617 = 274177 * 67280421310721
can be factorized with both methods: it requires about 33 sec with trial division; but less then 3
sec with Pollard method
The following number instead can be factorize only with Pollard method (about 40 sec).
10023859281455311421 = 7660450463 * 1308520867
Note that in this case both factors have 10 digits. The factos are prime so the factorization
stops itself.
For testing the primality see the probabilistic Prime test
Xnumbers Tutorial
118
Large numbers having factors more than 20 digits can be only manipulate with Xnumbers but
no more factorized. This task requires sophisticated algorithms joined with extreme fast
routines, usually written in C++ or Assembler.
When the numbers are very large, no efficient integer factorization algorithm is published; a
recent effort which factored a 200 digit number (RSA-200) took eighteen months and used over
half a century of computer time. The supposed difficulty of this problem is at the heart of certain
algorithms in cryptography such as RSA.
Not all numbers of a given length are equally hard to factor. The hardest instances of these
problems are those where the factors are two randomly-chosen prime numbers of about the
same size, but not too close
Factoring software is available either in commercial math packages or in standalone freeware
programs.
One of the most interesting program released in the public domain, supporting Quadratic Sieve
(QS) and Number Field Sieve (GNFS), that we have used for many years is Msieve
Batch Factorization with Msieve
Msieve is a very power freeware program, created by Jason Papadopoulos, for factoring large
integers.
No particular installation is required. Simply copy it in any folder that you like, for example,
/msieve.
What Msieve Does
Factoring is the study (half math, half engineering, half art form, and half... genial tricks) of
taking big numbers and expressing them as the product of smaller numbers. As the number to
be factored becomes larger, the difficulty involved in completing its factorization explodes and
the elaboration time increase sharply. The multiprecision library contained in Xnumber, written
in VBA, is no more sufficient for performing the factorization of number larger of 18-20 digits.
Msieve can with high probability find the complete factorization of any input number up to about
125 digits in size. The actual number of digits supported is much higher (up to 164 digits), but
problems larger than 125 digits are likely to fail.
Trial division is used on all inputs; if the result is less than 25 digits in size, tiny custom routines
do the factoring. For larger numbers, the code switches to more powerful methods. Prior to
version 1.04, those methods were limited to the quadratic sieve (QS). From that point on,
however, an implementation of Pollard-Brent algorithm and the number field sieve NFS are
also available.
A description of QS and NFS can be found in the Msieve Library itself with also a good amount
The oldest users will be pleasant to know that Msieve.exe is a consolle program. It can be
started at the prompt command (the old DOS enviroment) using the following general syntax
>> msieve [options] [number]
Msieve supports many useful options. For a complete list, run the command
>> msieve -h
For factoring one number give the following command
>> msieve -q  8004000546054003543176004301
8004000546054003543176004301
p10: 1000400017
prp10: 2000000011
prp10: 4000400023
In this case the program only outputs all the factors found. The code "p10" indicates a prime
factor of 10 digits; "prp10" indicates a probable prime
factor of 10 digits.