Quadratic modular equation solver

  1. Alpertron
  2. Web applications
  3. Quadratic modular equation solver
ax² + bx + c ≡ 0 (mod n)
 
 
 
 
Actions
Functions

This Web application can solve equations of the form ax² + bx + c ≡ 0 (mod n) where the integer unknown x is in the range 0 ≤ x < n. In particular, it can find modular square roots by setting a = -1, b = 0, c = number whose root we want to find and n = modulus.

You can type numbers or numerical expressions on the input boxes at the left.

The calculator accepts numbers of up to 10000 digits but notice that the modulus n should be factored (some large numbers cannot be factored in a reasonable amount of time). The factorization engine is the one used in the Elliptic Curve Method factorization applet, that uses the methods ECM and SIQS.

When a is not zero, the number of solutions depends on the number of distinct prime factor of the modulus, so if the modulus has many small prime factors (say more than 14), the program could run out of memory, and it will not show any solution.

Expressions

You can also enter expressions that use the following operators and parentheses:

  • + for addition
  • - for subtraction
  • * for multiplication
  • / for integer division
  • % for modulus (remainder of the integer division)
  • ^ or ** for exponentiation (the exponent must be greater than or equal to zero).
  • <, ==, >; <=, >=, != for comparisons. The operators return zero for false and -1 for true.
  • Ans: retrieves the last answer.
  • AND, OR, XOR, NOT for binary logic. The operations are done in binary (base 2). Positive (negative) numbers are prepended with an infinite number of bits set to zero (one).
  • SHL or <<: When b ≥ 0, a SHL b shifts a left the number of bits specified by b. This is equivalent to a × 2b. Otherwise, a SHL b shifts a right the number of bits specified by −b. This is equivalent to floor(a / 2b). Example: 5 SHL 3 = 40.
  • SHR or >>: When b ≥ 0, a SHR b shifts a right the number of bits specified by b. This is equivalent to floor(a / 2b). Otherwise, a SHR b shifts a left the number of bits specified by −b. This is equivalent to a × 2b. Example: -19 SHR 2 = -5.
  • n!: factorial (n must be greater than or equal to zero). Example: 6! = 6 × 5 × 4 × 3 × 2 = 720.
  • n!! ... !: multiple factorial (n must be greater than or equal to zero). It is the product of n times nk times n2k ... (all numbers greater than zero) where k is the number of exclamation marks. Example: 7!! = 7 × 5 × 3 × 1 = 105.
  • p#: primorial (product of all primes less than or equal to p). Example: 12# = 11 × 7 × 5 × 3 × 2 = 2310.
  • B(n): Probable prime immediately before n. Example: B(24) = 23.
  • F(n): Fibonacci number Fn from the sequence 0, 1, 1, 2, 3, 5, 8, 13, 21, etc. where each element equals the sum of the previous two members of the sequence. Example: F(7) = 13.
  • L(n): Lucas number Ln = Fn-1 + Fn+1
  • N(n): Probable prime immediately after n. Example: N(24) = 29.
  • P(n): Unrestricted Partition Number (number of decompositions of n into sums of integers without regard to order). Example: P(4) = 5 because the number 4 can be partitioned in 5 different ways: 4 = 3+1 = 2+2 = 2+1+1 = 1+1+1+1.
  • Gcd(m,n, ...): Greatest common divisor of these integers. Example: GCD(12, 16) = 4.
  • Lcm(m,n, ...): Least common multiple of these integers. Example: LCM(12, 16, 24) = 48.
  • FloorDiv(m,n): integer part of the quotient of m divided by n. Examples: floordiv(10, 7) = 1 and floordiv(-10, 7) = -2.
  • Mod(m,n): value of m modulo the absolute value of n. Examples: Mod(10, 7) = 3 and Mod(-10, 7) = 4.
  • Modinv(m,n): inverse of m modulo n, only valid when m and n are coprime, meaning that they do not have common factors. Example: Modinv(3,7) = 5 because 3 × 5 ≡ 1 (mod 7)
  • Modpow(m,n,r): finds mn modulo r. Example: Modpow(3, 4, 7) = 4, because 34 ≡ 4 (mod 7).
  • Totient(n): finds the number of positive integers less than n which are relatively prime to n. Example: Totient(6) = 2 because 1 and 5 do not have common factors with 6.
  • Jacobi(m,n): obtains the Jacobi symbol of m and n. When the second argument is prime, the result is zero when m is multiple of n, it is one if there is a solution of x² ≡ m (mod n) and it is equal to −1 when the mentioned congruence has no solution.
  • Random(m,n): integer random number between m and n.
  • Abs(n): absolute value of n.
  • Sign(n): returns zero if n is zero, −1 if negative or 1 if positive.
  • IsPrime(n): returns zero if n is not probable prime, −1 if it is. Example: IsPrime(5) = −1.
  • Sqrt(n): Integer part of the square root of the argument.
  • Iroot(n,r): Integer r-root of the first argument. Example: Iroot(8, 3) = 2.
  • NumDigits(n,r): Number of digits of n in base r. Example: NumDigits(13, 2) = 4 because 13 in binary (base 2) is expressed as 1101.
  • SumDigits(n,r): Sum of digits of n in base r. Example: SumDigits(213, 10) = 6 because the sum of the digits expressed in decimal is 2+1+3 = 6.
  • RevDigits(n,r): finds the value obtained by writing backwards the digits of n in base r. Example: RevDigits(213, 10) = 312.

You can use the prefix 0x for hexadecimal numbers, for example 0x38 is equal to 56.

The exponentiation symbol is not present in some mobile devices, so two asterisks ** can be typed as the exponentiation operator.

Configuration

You can change settings for this application by pressing the Config button when a factorization is not in progress. A new window will pop up where you can select different settings:

  • Digits per group: In order to improve readability, big numbers are separated by spaces forming groups of a fixed number of digits. With this input box, you can determine the number of digits in a group.
  • Keyboard: This enables the user to select between numeric or complete (alphanumeric) virtual keyboard. The virtual keyboard appears on the screen when the user selects an input box on touch screens.

The configuration is saved in your device, so when you start again the calculator, all settings remain the same.

Source code

You can download the source of the current program and the old quadratic modular equation applet from GitHub. Notice that the source code is in C language and you need the Emscripten environment in order to generate JavaScript.

Written by Dario Alpern. Last updated 30 August 2026.

Sum,+,Subtraction,-,Multiplication,*,Division,/,Remainder,%,Power,^,Last answer,ans,Integer square root,sqrt1,Integer root\n\nFirst argument: radicand\nSecond argument: root order,iroot2,Random number\n\nFirst argument: minimum value for random number\nSecond argument: maximum value for random number,Random2,Absolute value,Abs1,Sign,Sign1
Equal,=,Not equal,!=,,,Greater,>,Not greater,<=,Less,<,Not less,>=
Shift left\n\nLeft operand: value to shift\nRight operand: number of bits, SHL ,Shift right\n\nLeft operand: value to shift\nRight operand: number of bits, SHR ,,,Logic AND, AND ,Logic OR, OR ,Exclusive OR, XOR ,Logic NOT, NOT
,,Greatest Common Divisor\n\nOne or more arguments can be used,GCD2,Least Common Multiple\n\nOne or more arguments can be used,LCM2,The value is prime?,IsPrime1
Next prime after,N1,Last prime before,B1,,,Number of digits\n\nFirst argument: value\nSecond argument: base,NumDigits2,Sum of digits\n\nFirst argument: value\nSecond argument: base,SumDigits2,Reverse digits\n\nFirst argument: value\nSecond argument: base,RevDigits2
Integer part of quotient\n\nFirst argument: dividend\nSecond argument: divisor,FloorDiv2,Modulo\n\nFirst argument: value\nSecond argument: modulo,Mod2,Modular inverse\n\nFirst argument: value\nSecond argument: modulus,ModInv2,Modular division\n\nFirst argument: dividend\nSecond argument: divisor\nThird argument: modulus,ModDiv3,Modular power\n\nFirst argument: base\nSecond argument: exponent\nThird argument: modulus,ModPow3,Totient,Totient1,Jacobi symbol\n\nFirst argument: upper value\nSecond argument: lower value,Jacobi2
Factorial,!,Primorial,#,Fibonacci,F1,Lucas,L1,Partition,P1
Sum,+,Subtraction,-,Multiplication,*,Division,/,,,Hex prefix,0x,10,A,11,B,12,C,13,D,14,E,15,F
Left parenthesis,(,Right parenthesis,),
quadratic coefficient
linear coefficient
constant coefficient
modulus
Please type a number or expression for the {missing}.
Solving the quadratic equation...

Calculation stopped by user

sendmail