A method of determining two factors of an odd integer without need of multiplication or division operation in iterative portion of computation is presented. It is feasible for an implementing algorithm to use only integer addition and subtraction throughout. Presentation of material is non-theoretical; intended to be accessible to a broader audience of non academic and theoretical practitioners.
©2016 charles sauerbier, all rights reserved.
Page 1 of 6
Factoring Odd Integers without Multiplication and Division
Charles Sauerbier
1
Introduction
Factoring of integers is a problem with a long history. The Sieve of Eratosthenes is perhaps the oldest
know method. A number of methods1 for factoring of integer have since been developed.
A method is interesting in the absence of need for multiplication and division in iterative component of
the algorithm is presented. It can be used to determine if an integer is a prime, as the computation will
not encounter a halting state at other than parameters that produce the original integer and 1. The
method arose from empirical observation and reasoning of relations from what was observed, as
opposed to theorizing a means on basis of prior knowledge or approach used by others.
This paper takes a less than conventional approach to presentation of the material. It is assumed the
reader has familiarity with the underlying basic mathematics. The provided derivation follows from basic
mathematical principles, so no proofs are provided.
2
Diophantine Expression
It is a property of integers that given some integer 𝑛 there exists two integers, 𝑝 and 𝑞, such that
𝑛= 𝑝∗𝑞, where 0 < 𝑝≤𝑛 and 0 < 𝑞≤𝑛. If 𝑛 is even then one solution is for 𝑝= 2 and 𝑞= 𝑛2
⁄ .
Similarly should 𝑞 be an even integer then 𝑞 has 2 as a factor.
What complicates factoring is determining values for 𝑝 and 𝑞 where 𝑛 is an odd integer. The odd
integers are not all multiples of a single integer value, as is the case for even integers. However, every
odd integer 𝑥 can be expressed as 𝑥= 2𝑦+ 1, for some 𝑦 such that 0 ≤𝑦≤(𝑥−1) 2
⁄ .
Considering only the case of factoring odd integers the set of equations in [2.1] is obtained.
[2.1]
𝑛= 𝑝∗𝑞
𝑛= 2𝑎+ 1
𝑝= 2𝑏+ 1
𝑞= 2𝑐+ 1
The equations for 𝑝 and 𝑞 are consequence of the set of odd integers being closed under multiplication.
Using the equations of [2.1] a linear Diophantine equation in two unknowns, 𝑏 and 𝑐, is obtained. The
derivation is in [2.2].
2010 Mathematic Subject Classification:
Primary: 11Y05, 11Y16
Secondary: 65Q10, 65Y20, 68Q17, 03D17
1 See [2]
©2016 charles sauerbier, all rights reserved.
Page 2 of 6
[2.2]
𝑛= 2𝑎+ 1 = (2𝑏+ 1) ∗(2𝑐+ 1)
2𝑎+ 1 = 4𝑏𝑐+ 2𝑏+ 2𝑐+ 1
2𝑎= 4𝑏𝑐+ 2𝑏+ 2𝑐
𝑎= 2𝑏𝑐+ 𝑏+ 𝑐
0 = 2𝑏𝑐+ 𝑏+ 𝑐−𝑎
Solved for the integer roots the last expression in [2.2] allows the determination of the factors of 𝑛
where 𝑏 and 𝑐 are substituted back into the respective equations for 𝑝 and 𝑞 in [2.1].
Conjecture 2.1
The upper bound on complexity for determining the integer roots of 0 = 2𝑏𝑐+ 𝑏+ 𝑐−𝑎 is of
the order 𝑂((log2 𝑛)ℎ), where ℎ is not dependent on 𝑛.
3
Difference Expressions
Given two initial values for 𝑏 and 𝑐 it is possible to adjust the values of each to approximate 𝑎. A system
of equations to allow iterative approximation of [2.2] is presented in [2.3]. Iteration stops where 𝑦𝑘=
0.
[2.3]
𝑎= (𝑛−1) 2
⁄
𝑏0 = 𝑐0 = ⌊√𝑎2
⁄ ⌋
𝑦𝑘= |(2𝑏𝑘𝑐𝑘+ 𝑏𝑘+ 𝑐𝑘) −𝑎|
𝑏𝑘= {
𝑏𝑘−1, 2𝑏𝑘−1 ≤𝑦𝑘−1
𝑏𝑘−1 −1, 2𝑏𝑘−1 > 𝑦𝑘−1
𝑐𝑘= 𝑐𝑘+ 1
4
Removing Multiplication
It is possible to remove the multiplication operation in the iteration process. Transformation of the
expression for 𝑦𝑘 for case where 2𝑏𝑘−1 < |𝑦𝑘−1| is shown in [2.4], with case where 2𝑏𝑘−1 ≥|𝑦𝑘−1|
shown in [2.5].
©2016 charles sauerbier, all rights reserved.
Page 3 of 6
[2.4]
𝑏𝑘= 𝑏𝑘−1
𝑐𝑘= 𝑐𝑘−1 + 1
𝑦𝑘= (2𝑏𝑘𝑐𝑘+ 𝑏𝑘+ 𝑐𝑘)
𝑦𝑘= (2𝑏𝑘−1(𝑐𝑘−1 + 1) + 𝑏𝑘−1 + (𝑐𝑘−1 + 1))
𝑦𝑘= (2𝑏𝑘−1𝑐𝑘−1 + 2𝑏𝑘−1 + 𝑏𝑘−1 + 𝑐𝑘−1 + 1)
𝑦𝑘= (2𝑏𝑘−1𝑐𝑘−1 + 𝑏𝑘−1 + 𝑐𝑘−1) + (2𝑏𝑘−1 + 1)
𝑦𝑘= 𝑦𝑘−1 + (2𝑏𝑘−1 + 1)
𝑦𝑘= 𝑦𝑘−1 + (2𝑏𝑘+ 1)
𝑦𝑘= 𝑦𝑘−1 + (𝑏𝑘+ 𝑏𝑘+ 1)
[2.5]
𝑏𝑘= 𝑏𝑘−1 −1
𝑐𝑘= 𝑐𝑘−1 + 1
𝑦𝑘= (2𝑏𝑘𝑐𝑘+ 𝑏𝑘+ 𝑐𝑘)
𝑦𝑘= (2(𝑏𝑘−1 −1)(𝑐𝑘−1 + 1) + (𝑏𝑘−1 −1) + (𝑐𝑘−1 + 1))
𝑦𝑘= 2(𝑏𝑘−1𝑐𝑘−1 + 𝑏𝑘−1 −𝑐𝑘−1 −1) + 𝑏𝑘−1 + 𝑐𝑘−1
𝑦𝑘= 2𝑏𝑘−1𝑐𝑘−1 + 2𝑏𝑘−1 −2𝑐𝑘−1 −2 + 𝑏𝑘−1 + 𝑐𝑘−1
𝑦𝑘= (2𝑏𝑘−1𝑐𝑘−1 + 𝑏𝑘−1 + 𝑐𝑘−1) + (2𝑏𝑘−1 −2𝑐𝑘−1 −2)
𝑦𝑘= 𝑦𝑘−1 + 2((𝑏𝑘+ 1) −(𝑐𝑘−1) −1)
𝑦𝑘= 𝑦𝑘−1 + 2(𝑏𝑘+ 1 −𝑐𝑘+ 1 −1)
𝑦𝑘= 𝑦𝑘−1 + 2(𝑏𝑘−𝑐𝑘+ 1)
The last expression in [2.4] and [2.5], respectively, allows the elimination of multiplication by reduction
to simple addition of respective values. The expression for 𝑦𝑘, using the last expression of [2.4] and
[2.5], respectively, is presented in [2.6].
[2.6]
𝑦0 = |(2𝑏0𝑐0 + 𝑏0 + 𝑐0) −𝑎|
𝑦𝑘= { y𝑘−1 + (2𝑏𝑘+ 1), 2𝑏𝑘−1 < |𝑦𝑘−1|
y𝑘−1 + 2(𝑏𝑘−𝑐𝑘+ 1), 2𝑏𝑘−1 ≥|𝑦𝑘−1|
The set of computations in [2.3] are restated in [2.7] modified to include [2.6].
©2016 charles sauerbier, all rights reserved.
Page 4 of 6
[2.7]
𝑎= (𝑛−1) 2
⁄
𝑏0 = 𝑐0 = ⌊√𝑥2
⁄ ⌋
𝑦0 = |(2𝑏0𝑐0 + 𝑏0 + 𝑐0) −𝑎|
𝑦𝑘= { y𝑘−1 + (2𝑏𝑘+ 1), 2𝑏𝑘−1 < |𝑦𝑘−1|
y𝑘−1 + 2(𝑏𝑘−𝑐𝑘+ 1), 2𝑏𝑘−1 ≥|𝑦𝑘−1|
𝑏𝑘= {
𝑏𝑘−1, 2𝑏𝑘−1 < |𝑦𝑘−1|
𝑏𝑘−1 −1, 2𝑏𝑘−1 ≥|𝑦𝑘−1|
𝑐𝑘= 𝑐𝑘+ 1
The equations of [2.7] provide means to determine factors of an integer 𝑛 by iteration using only integer
arithmetic opera
This content is AI-processed based on open access ArXiv data.