<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Prime Numbers on Math ∩ Programming</title><link>https://www.jeremykun.com/categories/prime-numbers/</link><description>Recent content in Prime Numbers on Math ∩ Programming</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Tue, 07 Apr 2026 06:00:00 -0700</lastBuildDate><atom:link href="https://www.jeremykun.com/categories/prime-numbers/index.xml" rel="self" type="application/rss+xml"/><item><title>Deterministic Primality Testing for Limited Bit Width</title><link>https://www.jeremykun.com/2026/04/07/deterministic-miller-rabin/</link><pubDate>Tue, 07 Apr 2026 06:00:00 -0700</pubDate><guid>https://www.jeremykun.com/2026/04/07/deterministic-miller-rabin/</guid><description>Problem: Determine if a 32-bit number is prime (deterministically)
Solution: (in C++)
// Bases to test. Using the first 4 prime bases makes the test deterministic // for all 32-bit integers. See https://oeis.org/A014233. int64_t bases[] = {2, 3, 5, 7}; inline int countTrailingZeros(uint64_t n) { if (n == 0) return 64; return __builtin_ctzll(n); } int64_t modularExponentiation(int64_t base, int64_t exponent, int64_t modulus) { int64_t res = 1; int64_t b = base % modulus; int64_t e = exponent; while (e &amp;gt; 0) { if (e &amp;amp; 1) { // Doesn&amp;#39;t overflow because we assume 32-bit integer inputs res = (res * b) % modulus; } b = (b * b) % modulus; e &amp;gt;&amp;gt;= 1; } return res; } bool isPrime(int64_t n) { if (n &amp;lt; 2) return false; if (n &amp;lt; 4) return true; if (!</description></item></channel></rss>