138 lines
11 KiB
HTML
138 lines
11 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>Summing Primes</title>
|
|
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<meta name="viewport" content="width=device-width initial-scale=1">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<meta http-equiv="Content-Language" content="en-gb">
|
|
|
|
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<script>
|
|
MathJax = {
|
|
tex: {
|
|
inlineMath: '$', '$'], ['\\(', '\\)'
|
|
},
|
|
svg: {
|
|
fontCache: 'global'
|
|
}
|
|
};
|
|
</script>
|
|
<script type="text/javascript" id="MathJax-script" async
|
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js">
|
|
</script>
|
|
|
|
<script src="http://code.jquery.com/jquery-1.12.4.min.js"
|
|
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
|
|
|
|
<script src="../docs-assets/Bigfoot.js"></script>
|
|
<link href="../docs-assets/Bigfoot.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<link href="../docs-assets/ConsoleText-Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
|
|
</head>
|
|
<body class="commentary-font">
|
|
<nav role="navigation">
|
|
<h1><a href="../index.html">
|
|
<img src="../docs-assets/Octagram.png" width=72 height=72">
|
|
</a></h1>
|
|
<ul><li><a href="../inweb/index.html">inweb</a></li>
|
|
</ul><h2>Foundation Module</h2><ul>
|
|
<li><a href="../foundation-module/index.html">foundation</a></li>
|
|
<li><a href="../foundation-test/index.html">foundation-test</a></li>
|
|
</ul><h2>Example Webs</h2><ul>
|
|
<li><a href="index.html"><span class="selectedlink">goldbach</span></a></li>
|
|
<li><a href="../twinprimes/twinprimes.html">twinprimes</a></li>
|
|
<li><a href="../eastertide/index.html">eastertide</a></li>
|
|
</ul><h2>Repository</h2><ul>
|
|
<li><a href="https://github.com/ganelson/inweb"><img src="../docs-assets/github.png" height=18> github</a></li>
|
|
</ul><h2>Related Projects</h2><ul>
|
|
<li><a href="../../../inform/docs/index.html">inform</a></li>
|
|
<li><a href="../../../intest/docs/index.html">intest</a></li>
|
|
|
|
</ul>
|
|
</nav>
|
|
<main role="main">
|
|
<!--Weave of 'Summing Primes' generated by Inweb-->
|
|
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">The Goldbach Conjecture</a></li><li><b>Summing Primes</b></li></ul><p class="purpose">Here we verify the conjecture for small numbers.</p>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. </b>On 7 June 1742, Christian Goldbach wrote a letter from Moscow to Leonhard
|
|
Euler in Berlin making "eine conjecture hazardiren" that every even number
|
|
greater than \(2\) can be written as a sum of two primes.<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> Euler did not
|
|
know if this was true, and nor does anyone else.
|
|
</p>
|
|
|
|
<center><img src="Letter.jpg" height="720"></center>
|
|
<p class="commentary">Goldbach, a professor at St Petersburg and tutor to Tsar Peter II, wrote in
|
|
several languages in an elegant cursive script, and was much valued as a
|
|
letter-writer, though his reputation stands less high today.<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup> All the same,
|
|
the general belief now is that primes are just plentiful enough, and just
|
|
evenly-enough spread, for Goldbach to be right. It is known that:
|
|
</p>
|
|
|
|
<ul class="items"><li>(a) every even number is a sum of at most six primes (Ramaré, 1995), and
|
|
</li><li>(b) every odd number is a sum of at most five (Tao, 2012).
|
|
</li></ul>
|
|
<ul class="footnotetexts"><li class="footnote" id="fn:1"><p class="inwebfootnote"><sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> "Greater than 2" is our later proviso: Goldbach needed no such exception
|
|
because he considered 1 a prime number, as was normal then, and was sometimes
|
|
said as late as the early twentieth century.
|
|
<a href="#fnref:1" title="return to text"> ↩</a></p></li><li class="footnote" id="fn:2"><p class="inwebfootnote"><sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup> Goldbach, almost exactly a contemporary of Voltaire, was a good citizen
|
|
of the great age of Enlightenment letter-writing. He and Euler exchanged
|
|
scholarly letters for over thirty years, not something Euler would have
|
|
kept up with a duffer. Goldbach was also not, as is sometimes said, a lawyer.
|
|
See: <a href="http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html" class="external">http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html</a>
|
|
An edited transcription of the letter is at: <a href="http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf" class="external">http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf</a>
|
|
<a href="#fnref:2" title="return to text"> ↩</a></p></li></ul>
|
|
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>Computer verification has been made up to around \(10^{18}\), but by rather
|
|
better methods than the one we use here. We will only go up to:
|
|
</p>
|
|
|
|
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">RANGE</span><span class="plain-syntax"> </span><span class="constant-syntax">100</span>
|
|
</pre>
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
<span class="plain-syntax">#</span><span class="identifier-syntax">include</span><span class="plain-syntax"> <</span><span class="identifier-syntax">stdio</span><span class="plain-syntax">.</span><span class="identifier-syntax">h</span><span class="plain-syntax">></span>
|
|
|
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">main</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">argv</span><span class="plain-syntax">[]) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=4; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="constant-syntax">RANGE</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">=</span><span class="identifier-syntax">i</span><span class="plain-syntax">+2) </span><span class="comment-syntax"> stepping in twos to stay even</span>
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="S-sp.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Solve Goldbach's conjecture for i</span><span class="named-paragraph-number">2.1</span></span></a><span class="character-syntax">;</span>
|
|
<span class="character-syntax">}</span>
|
|
</pre>
|
|
<p class="commentary firstcommentary"><a id="SP2_1"></a><b>§2.1. </b>This ought to print:
|
|
</p>
|
|
|
|
<pre class="ConsoleText-displayed-code all-displayed-code code-font">
|
|
<span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-element-syntax">$</span><span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-function-syntax">goldbach/Tangled/goldbach</span>
|
|
<span class="ConsoleText-plain-syntax"> 4 = 2+2</span>
|
|
<span class="ConsoleText-plain-syntax"> 6 = 3+3</span>
|
|
<span class="ConsoleText-plain-syntax"> 8 = 3+5</span>
|
|
<span class="ConsoleText-plain-syntax"> 10 = 3+7 = 5+5</span>
|
|
<span class="ConsoleText-plain-syntax"> 12 = 5+7</span>
|
|
<span class="ConsoleText-plain-syntax"> 14 = 3+11 = 7+7</span>
|
|
<span class="ConsoleText-plain-syntax"> ...</span>
|
|
</pre>
|
|
<p class="commentary">We'll print each different pair of primes adding up to \(i\). We
|
|
only check in the range \(2 \leq j \leq i/2\) to avoid counting pairs
|
|
twice over (thus \(8 = 3+5 = 5+3\), but that's hardly two different ways).
|
|
</p>
|
|
|
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Solve Goldbach's conjecture for i</span><span class="named-paragraph-number">2.1</span></span><span class="ConsoleText-comment-syntax"> =</span>
|
|
</p>
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">printf</span><span class="plain-syntax">(</span><span class="string-syntax">"%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax">=2; </span><span class="identifier-syntax">j</span><span class="plain-syntax"><=</span><span class="identifier-syntax">i</span><span class="plain-syntax">/2; </span><span class="identifier-syntax">j</span><span class="plain-syntax">++)</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="S-tsoe.html#SP2" class="function-link"><span class="function-syntax">isprime</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">j</span><span class="plain-syntax">)) && (</span><a href="S-tsoe.html#SP2" class="function-link"><span class="function-syntax">isprime</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">-</span><span class="identifier-syntax">j</span><span class="plain-syntax">)))</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">printf</span><span class="plain-syntax">(</span><span class="string-syntax">" = %d+%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">-</span><span class="identifier-syntax">j</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">printf</span><span class="plain-syntax">(</span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>This code is used in <a href="S-sp.html#SP2">§2</a>.</li></ul>
|
|
<hr class="tocbar">
|
|
<ul class="toc"><li><i>(This section begins Sections.)</i></li><li><a href="S-tsoe.html">Continue with 'The Sieve of Eratosthenes'</a></li></ul><hr class="tocbar">
|
|
<!--End of weave-->
|
|
|
|
</main>
|
|
</body>
|
|
</html>
|
|
|