For distinct primes \(p \lt q \lt r\), define the three semiprimes
$$a=pq,\qquad b=pr,\qquad c=qr.$$
For each prime triple, we want the largest integer that cannot be written as a nonnegative linear combination of \(a,b,c\). Then we sum that Frobenius value over all triples below the prime limit. As usual, the final Project Euler number is omitted; the purpose of this page is to explain the mathematics behind the C++ solution.
Let
$$S=\langle pq,pr,qr\rangle=\{x\cdot pq+y\cdot pr+z\cdot qr:\ x,y,z\ge0\}.$$
The problem asks for the Frobenius number of this semigroup, namely the largest integer not belonging to \(S\).
For three arbitrary generators, no simple closed formula usually exists. The reason this problem is solvable is that the generators share the prime factors \(p,q,r\) in a very rigid way.
Because
$$pq=p\cdot q,\qquad pr=p\cdot r,$$
every representable number has the form
$$N=z\cdot qr+p\cdot m,$$
where
$$m\in \langle q,r\rangle=\{u\cdot q+v\cdot r:\ u,v\ge0\}.$$
So the whole three-generator problem reduces to this question:
For each residue class modulo \(p\), how large can \(N\) be before the quotient part \(m\) is forced into the two-generator semigroup \(\langle q,r\rangle\)?
Since \(p\) is distinct from \(q\) and \(r\),
$$\gcd(qr,p)=1.$$
Therefore multiplication by \(qr\) permutes the residue classes modulo \(p\). So for every integer \(N\), there is a unique choice
$$x\in\{0,1,\dots,p-1\}$$
such that
$$N\equiv x\cdot qr \pmod p.$$
For that unique \(x\), we can write
$$N=x\cdot qr+p\cdot m$$
with integer \(m\).
Now \(q\) and \(r\) are coprime primes, so the classical two-generator Frobenius theorem applies:
$$g(q,r)=qr-q-r.$$
This means:
$$m\notin\langle q,r\rangle\quad\Longrightarrow\quad m\le qr-q-r,$$
and every integer
$$m\gt qr-q-r$$
does belong to \(\langle q,r\rangle\).
Fix a residue representative \(x\in\{0,\dots,p-1\}\). Consider numbers of the form
$$N=x\cdot qr+p\cdot m.$$
If \(m\gt qr-q-r\), then \(m\in\langle q,r\rangle\), hence \(N\in S\). Therefore the only candidates for nonrepresentability in this residue class occur when
$$m\le qr-q-r.$$
This suggests that the largest missing number in the residue class should be
$$G_x=x\cdot qr+p(qr-q-r).$$
Why is \(G_x\) not representable? Suppose, for contradiction, that \(G_x\in S\). Then
$$G_x=z\cdot qr+p(q u+r v)$$
for some \(z,u,v\ge0\). Because \(qr\) is invertible modulo \(p\), the residue condition forces
$$z\equiv x\pmod p,$$
so we can write
$$z=x+p t,\qquad t\ge0.$$
Substitute this into the equation for \(G_x\):
$$x\cdot qr+p(qr-q-r)=(x+p t)\cdot qr+p(q u+r v).$$
After subtracting \(x\cdot qr\) and dividing by \(p\), we get
$$qr-q-r=t\cdot qr+q u+r v.$$
If \(t\ge1\), then the right-hand side is at least \(qr\), impossible because the left-hand side is \(qr-q-r\lt qr\). So \(t=0\), and then
$$qr-q-r=q u+r v,$$
contradicting the fact that \(qr-q-r\) is the Frobenius number for \(q\) and \(r\). Hence \(G_x\notin S\).
Why is every larger number in the same residue class representable? Let
$$N\gt G_x$$
and suppose \(N\equiv x\cdot qr\pmod p\). Then
$$N=x\cdot qr+p m$$
for some integer \(m\), and because \(N\gt G_x\), we have
$$m\gt qr-q-r.$$
So \(m\in\langle q,r\rangle\), which implies \(N\in S\).
Therefore \(G_x\) is exactly the largest nonrepresentable integer in its residue class.
Now the global Frobenius number is simply the maximum of the \(G_x\):
$$g(pq,pr,qr)=\max_{0\le x\le p-1}\Bigl(x\cdot qr+p(qr-q-r)\Bigr).$$
This is largest at \(x=p-1\), so
$$g(pq,pr,qr)=(p-1)qr+p(qr-q-r).$$
Expand it:
$$g(pq,pr,qr)=2pqr-pq-pr-qr.$$
This is the exact closed formula used by the code.
The generators are
$$6,\ 10,\ 15.$$
For the two-generator core,
$$g(3,5)=15-3-5=7.$$
Because \(p=2\), there are only two residue classes modulo \(2\):
For \(x=0\), the largest missing number is
$$G_0=0\cdot15+2\cdot7=14.$$
For \(x=1\), the largest missing number is
$$G_1=1\cdot15+2\cdot7=29.$$
So the global answer is \(29\). This matches the explicit nonrepresentability check:
$$29\notin\langle6,10,15\rangle,$$
while the next few numbers are already representable:
$$30=15+15,\quad 31=15+10+6,\quad 32=10+10+6+6,\quad 33=15+6+6+6.$$
Here
$$g(7,11)=77-7-11=59.$$
Again \(p=2\), so
$$G_0=2\cdot59=118,\qquad G_1=77+2\cdot59=195.$$
Hence
$$g(14,22,77)=195,$$
which is exactly the second checkpoint hard-coded in the program.
Once the Frobenius number has a closed form, the original problem becomes
$$\sum_{p \lt q \lt r \lt L}\bigl(2pqr-pq-pr-qr\bigr).$$
So the hard mathematics is entirely in the formula above; after that, the remaining task is just prime generation and triple enumeration.
1) Prime sieve. primes_below(limit) generates all primes below the chosen limit.
2) Closed formula helper. frobenius_semiprime_triple(p,q,r) returns
$$2pqr-pq-pr-qr.$$
3) Brute-force validation on small cases. brute_frobenius_three(a,b,c) builds a reachability table and checks that the formula agrees with brute force for all prime triples below \(20\).
4) Final accumulation. solve_sum() iterates over all ordered triples \(p \lt q \lt r\) and accumulates the result in a 128-bit integer.
5) Small total checkpoint. For primes below \(10\), the four triples are \((2,3,5)\), \((2,3,7)\), \((2,5,7)\), \((3,5,7)\), giving
$$29+43+81+139=292.$$
If \(m=\pi(L)\) is the number of primes below \(L\), the sieve costs about \(O(L\log\log L)\), while the triple enumeration costs \(O(m^3)\). That cubic triple loop dominates the runtime. Memory usage is \(O(m)\) for the prime list, plus a small extra table used only by the brute-force checkpoints.
Für verschiedene Primzahlen \(p \lt q \lt r\) betrachten wir die drei Semiprime
$$a=pq,\qquad b=pr,\qquad c=qr.$$
Für jedes Primzahl-Tripel ist die größte Zahl zu bestimmen, die sich nicht als nichtnegative Linearkombination von \(a,b,c\) schreiben lässt. Anschließend werden diese Frobenius-Werte über alle Tripel unterhalb der Schranke aufsummiert. Die finale Euler-Zahl wird hier nicht angegeben; wichtig ist die Herleitung der geschlossenen Formel.
Setze
$$S=\langle pq,pr,qr\rangle=\{x\cdot pq+y\cdot pr+z\cdot qr:\ x,y,z\ge0\}.$$
Gesucht ist also die Frobenius-Zahl dieser Halbgruppe, also die größte ganze Zahl, die nicht in \(S\) liegt.
Für drei beliebige Erzeuger gibt es normalerweise keine einfache Formel. Hier ist die Struktur wegen der drei Primfaktoren jedoch so starr, dass man die Aufgabe auf ein zweidimensionales Frobenius-Problem zurückführen kann.
Da
$$pq=p\cdot q,\qquad pr=p\cdot r,$$
hat jede darstellbare Zahl die Form
$$N=z\cdot qr+p\cdot m,$$
wobei
$$m\in \langle q,r\rangle=\{u\cdot q+v\cdot r:\ u,v\ge0\}.$$
Die Dreier-Aufgabe zerfällt also in \(p\) Restklassen modulo \(p\).
Weil \(p\) verschieden von \(q\) und \(r\) ist, gilt
$$\gcd(qr,p)=1.$$
Damit durchläuft Multiplikation mit \(qr\) alle Restklassen modulo \(p\). Für jedes \(N\) gibt es also genau ein
$$x\in\{0,1,\dots,p-1\}$$
mit
$$N\equiv x\cdot qr\pmod p,$$
und folglich eine Darstellung
$$N=x\cdot qr+p\cdot m$$
mit ganzzahligem \(m\).
Da \(q\) und \(r\) teilerfremd sind, gilt die klassische Sylvester-Formel:
$$g(q,r)=qr-q-r.$$
Das bedeutet:
$$m\notin\langle q,r\rangle\Longrightarrow m\le qr-q-r,$$
und jede Zahl
$$m\gt qr-q-r$$
liegt bereits in \(\langle q,r\rangle\).
Fixiere \(x\in\{0,\dots,p-1\}\). Dann betrachten wir Zahlen
$$N=x\cdot qr+p\cdot m.$$
Sobald \(m\gt qr-q-r\), ist \(m\) darstellbar durch \(q\) und \(r\), also ist auch \(N\in S\). Der Kandidat für die größte fehlende Zahl in dieser Restklasse ist daher
$$G_x=x\cdot qr+p(qr-q-r).$$
Warum ist \(G_x\) nicht darstellbar? Angenommen, \(G_x\in S\). Dann gäbe es \(z,u,v\ge0\) mit
$$G_x=z\cdot qr+p(q u+r v).$$
Wegen der Restklasse modulo \(p\) muss gelten
$$z\equiv x\pmod p,$$
also
$$z=x+p t,\qquad t\ge0.$$
Einsetzen liefert
$$x\cdot qr+p(qr-q-r)=(x+p t)\cdot qr+p(q u+r v).$$
Nach Kürzen von \(x\cdot qr\) und Division durch \(p\) folgt
$$qr-q-r=t\cdot qr+q u+r v.$$
Falls \(t\ge1\), wäre die rechte Seite mindestens \(qr\), die linke Seite ist aber \(qr-q-r\lt qr\). Also muss \(t=0\) gelten, und dann stünde dort
$$qr-q-r=q u+r v,$$
im Widerspruch dazu, dass \(qr-q-r\) gerade die Frobenius-Zahl von \(q\) und \(r\) ist. Also ist \(G_x\) nicht darstellbar.
Warum ist jede größere Zahl derselben Restklasse darstellbar? Sei \(N\gt G_x\) und
$$N\equiv x\cdot qr\pmod p.$$
Dann gilt
$$N=x\cdot qr+p\cdot m$$
mit einem ganzen \(m\), und aus \(N\gt G_x\) folgt
$$m\gt qr-q-r.$$
Somit ist \(m\in\langle q,r\rangle\), also \(N\in S\).
Also ist \(G_x\) exakt die größte nicht darstellbare Zahl in dieser Restklasse.
Die globale Frobenius-Zahl ist damit
$$g(pq,pr,qr)=\max_{0\le x\le p-1}\Bigl(x\cdot qr+p(qr-q-r)\Bigr).$$
Das Maximum wird bei \(x=p-1\) erreicht. Daher
$$g(pq,pr,qr)=(p-1)qr+p(qr-q-r).$$
Ausmultipliziert:
$$g(pq,pr,qr)=2pqr-pq-pr-qr.$$
Die Erzeuger sind
$$6,\ 10,\ 15.$$
Für den Zweierkern gilt
$$g(3,5)=15-3-5=7.$$
Da \(p=2\) ist, gibt es nur zwei Restklassen:
Für \(x=0\):
$$G_0=0\cdot15+2\cdot7=14.$$
Für \(x=1\):
$$G_1=1\cdot15+2\cdot7=29.$$
Also ist die Frobenius-Zahl \(29\). Das passt zu
$$29\notin\langle6,10,15\rangle,$$
während etwa
$$30=15+15,\quad 31=15+10+6,\quad 32=10+10+6+6$$
schon darstellbar sind.
Hier ist
$$g(7,11)=77-7-11=59.$$
Wegen \(p=2\) folgt
$$G_0=2\cdot59=118,\qquad G_1=77+2\cdot59=195.$$
Damit
$$g(14,22,77)=195,$$
genau wie im Code überprüft.
Nach der Herleitung bleibt nur noch
$$\sum_{p \lt q \lt r \lt L}(2pqr-pq-pr-qr)$$
über alle Tripel unterhalb der Schranke zu summieren.
1) Sieb. primes_below(limit) erzeugt alle Primzahlen unterhalb der Schranke.
2) Geschlossene Formel. frobenius_semiprime_triple(p,q,r) liefert
$$2pqr-pq-pr-qr.$$
3) Brute-Force-Validierung. Für kleine Primzahlen unter \(20\) vergleicht der Code die Formel mit einer Erreichbarkeitstabelle.
4) Gesamtsumme. solve_sum() durchläuft alle geordneten Tripel \(p\lt q\lt r\) und akkumuliert mit 128-Bit-Arithmetik.
5) Kleiner Gesamt-Checkpoint. Für Primzahlen unter \(10\) ergibt sich
$$29+43+81+139=292.$$
Mit \(m=\pi(L)\) kostet das Sieb ungefähr \(O(L\log\log L)\). Die Dreifachschleife über alle Primzahl-Tripel kostet \(O(m^3)\) und dominiert die Laufzeit. Der Speicherbedarf ist \(O(m)\).
Farklı asallar \(p \lt q \lt r\) için şu üç yarı-asal sayı tanımlanır:
$$a=pq,\qquad b=pr,\qquad c=qr.$$
Her asal üçlüsü için, bu üç sayının negatif olmayan lineer birleşimi olarak yazılamayan en büyük sayı istenir. Sonra bu Frobenius değeri sınır altındaki tüm asal üçlüleri üzerinde toplanır. Her zamanki gibi nihai Project Euler cevabı burada verilmez; önemli olan kapalı formülün neden doğru olduğudur.
Şu yarıgrubu ele alalım:
$$S=\langle pq,pr,qr\rangle=\{x\cdot pq+y\cdot pr+z\cdot qr:\ x,y,z\ge0\}.$$
Aranan şey, \(S\) içinde olmayan en büyük tam sayıdır.
Genel üç üreteçli Frobenius problemlerinde basit kapalı formül yoktur. Bu soruda işe yarayan şey, üreteçlerin asal çarpan yapısının çok özel olmasıdır.
Çünkü
$$pq=p\cdot q,\qquad pr=p\cdot r,$$
her yazılabilir sayı şu biçimdedir:
$$N=z\cdot qr+p\cdot m,$$
burada
$$m\in \langle q,r\rangle=\{u\cdot q+v\cdot r:\ u,v\ge0\}.$$
Yani üç üreteçli problem, mod \(p\) kalıntı sınıflarına bölünmüş bir iki üreteçli probleme dönüşür.
\(p\), \(q\) ve \(r\)’den farklı asal olduğundan
$$\gcd(qr,p)=1$$
olur. Bu yüzden \(qr\) ile çarpmak mod \(p\) sınıflarını permüte eder. Dolayısıyla her \(N\) için,
$$x\in\{0,1,\dots,p-1\}$$
olmak üzere tek bir \(x\) vardır ve
$$N\equiv x\cdot qr\pmod p.$$
Böylece
$$N=x\cdot qr+p\cdot m$$
şeklinde yazılabilir.
\(q\) ve \(r\) aralarında asaldır; bu yüzden klasik iki üreteçli Frobenius teoremi geçerlidir:
$$g(q,r)=qr-q-r.$$
Bunun anlamı şudur:
$$m\notin\langle q,r\rangle\Longrightarrow m\le qr-q-r,$$
ve
$$m\gt qr-q-r$$
olan her tam sayı artık \(\langle q,r\rangle\) içindedir.
\(x\in\{0,\dots,p-1\}\) sabit olsun. Bu sınıftaki sayılar
$$N=x\cdot qr+p\cdot m$$
şeklindedir. Eğer \(m\gt qr-q-r\) ise \(m\), \(q\) ve \(r\) ile yazılabilir; dolayısıyla \(N\in S\) olur. O hâlde bu sınıftaki en büyük eksik sayı için doğal aday
$$G_x=x\cdot qr+p(qr-q-r)$$
değeridir.
Neden \(G_x\) yazılamaz? Tersini varsayalım. O zaman \(G_x\in S\) olduğundan
$$G_x=z\cdot qr+p(q u+r v)$$
eşitliği bazı \(z,u,v\ge0\) için sağlanır. Mod \(p\)’ye bakarsak
$$z\equiv x\pmod p$$
olmalıdır; yani
$$z=x+p t,\qquad t\ge0.$$
Bunu denkleme koyarsak
$$x\cdot qr+p(qr-q-r)=(x+p t)\cdot qr+p(q u+r v).$$
\(x\cdot qr\) terimini sadeleştirip \(p\)’ye bölersek
$$qr-q-r=t\cdot qr+q u+r v$$
elde edilir. Eğer \(t\ge1\) ise sağ taraf en az \(qr\) olur; ama sol taraf \(qr-q-r\lt qr\)’dir. O hâlde \(t=0\) zorunludur. Bu kez
$$qr-q-r=q u+r v$$
çıkar ki bu da \(qr-q-r\)’nin \(q\) ve \(r\) için Frobenius sayısı olmasına ters düşer. Demek ki \(G_x\) gerçekten yazılamaz.
Neden aynı sınıftaki daha büyük her sayı yazılabilir? Eğer
$$N\gt G_x$$
ve
$$N\equiv x\cdot qr\pmod p$$
ise
$$N=x\cdot qr+p\cdot m$$
olur ve \(N\gt G_x\) olduğundan
$$m\gt qr-q-r$$
elde edilir. Bu da \(m\in\langle q,r\rangle\) demektir; dolayısıyla \(N\in S\).
Sonuç olarak \(G_x\), bu kalıntı sınıfındaki en büyük yazılamayan sayıdır.
Genel Frobenius değeri
$$g(pq,pr,qr)=\max_{0\le x\le p-1}\Bigl(x\cdot qr+p(qr-q-r)\Bigr)$$
olur. Bu ifade \(x\) arttıkça büyüdüğü için maksimum \(x=p-1\)’de alınır:
$$g(pq,pr,qr)=(p-1)qr+p(qr-q-r).$$
Bunu açarsak
$$g(pq,pr,qr)=2pqr-pq-pr-qr$$
elde edilir. Kodun kullandığı kapalı form tam olarak budur.
Üreteçler
$$6,\ 10,\ 15$$
olur. İki üreteçli çekirdekte
$$g(3,5)=15-3-5=7.$$
\(p=2\) olduğundan yalnızca iki kalıntı sınıfı vardır:
\(x=0\) için
$$G_0=0\cdot15+2\cdot7=14,$$
\(x=1\) için
$$G_1=1\cdot15+2\cdot7=29.$$
Dolayısıyla genel cevap \(29\)’dur. Gerçekten de
$$29\notin\langle6,10,15\rangle,$$
ama bir sonraki sayılar yazılabilir:
$$30=15+15,\quad 31=15+10+6,\quad 32=10+10+6+6,\quad 33=15+6+6+6.$$
Burada
$$g(7,11)=77-7-11=59.$$
Yine \(p=2\) olduğu için
$$G_0=2\cdot59=118,\qquad G_1=77+2\cdot59=195.$$
Yani
$$g(14,22,77)=195,$$
ve bu, kaynak koddaki ikinci kontrol noktasıyla aynıdır.
Kapalı formül bulunduktan sonra problem yalnızca
$$\sum_{p \lt q \lt r \lt L}(2pqr-pq-pr-qr)$$
toplamını almaya dönüşür.
1) Elek. primes_below(limit) sınır altındaki tüm asalları üretir.
2) Kapalı formül fonksiyonu. frobenius_semiprime_triple(p,q,r) doğrudan
$$2pqr-pq-pr-qr$$
döndürür.
3) Brute-force doğrulama. Küçük asallar için brute_frobenius_three(a,b,c) erişilebilirlik tablosu kurar ve formülün sonucunu kontrol eder.
4) Global toplam. solve_sum() tüm \(p \lt q \lt r\) üçlülerini gezer ve sonucu 128-bit değişkende toplar.
5) Küçük toplam checkpoint’i. \(10\)’dan küçük asallar için
$$29+43+81+139=292$$
elde edilir.
\(m=\pi(L)\) olsun. Elek yaklaşık \(O(L\log\log L)\) zaman alır. Tüm üçlülerin gezilmesi \(O(m^3)\) maliyetlidir ve baskın kısımdır. Bellek \(O(m)\) seviyesindedir.
Para primos distintos \(p \lt q \lt r\), consideramos los tres semiprimos
$$a=pq,\qquad b=pr,\qquad c=qr.$$
Para cada trío primo, buscamos el mayor entero que no puede escribirse como combinación lineal no negativa de \(a,b,c\). Luego sumamos ese valor de Frobenius sobre todos los tríos bajo el límite. Como siempre, el número final de Project Euler se omite; aquí interesa la deducción de la fórmula.
Definimos
$$S=\langle pq,pr,qr\rangle=\{x\cdot pq+y\cdot pr+z\cdot qr:\ x,y,z\ge0\}.$$
El problema pide el mayor entero que no pertenece a \(S\).
Como
$$pq=p\cdot q,\qquad pr=p\cdot r,$$
todo número representable puede escribirse como
$$N=z\cdot qr+p\cdot m,$$
donde
$$m\in \langle q,r\rangle=\{u\cdot q+v\cdot r:\ u,v\ge0\}.$$
Así, el problema de tres generadores se reduce a estudiar cada clase residual módulo \(p\).
Puesto que \(p\) es distinto de \(q\) y \(r\),
$$\gcd(qr,p)=1.$$
Por eso, multiplicar por \(qr\) permuta las clases módulo \(p\). Existe un único
$$x\in\{0,1,\dots,p-1\}$$
tal que
$$N\equiv x\cdot qr\pmod p,$$
y entonces
$$N=x\cdot qr+p\cdot m.$$
Como \(q\) y \(r\) son coprimos, vale la fórmula clásica:
$$g(q,r)=qr-q-r.$$
Esto significa que
$$m\notin\langle q,r\rangle\Longrightarrow m\le qr-q-r,$$
y todo
$$m\gt qr-q-r$$
sí pertenece a \(\langle q,r\rangle\).
Fijemos \(x\in\{0,\dots,p-1\}\). En esa clase consideramos
$$N=x\cdot qr+p\cdot m.$$
Si \(m\gt qr-q-r\), entonces \(m\in\langle q,r\rangle\), así que \(N\in S\). Por tanto, el candidato natural es
$$G_x=x\cdot qr+p(qr-q-r).$$
Por qué \(G_x\) no es representable. Supongamos lo contrario. Entonces
$$G_x=z\cdot qr+p(q u+r v)$$
para ciertos \(z,u,v\ge0\). Al mirar módulo \(p\), forzosamente
$$z\equiv x\pmod p,$$
de modo que
$$z=x+p t,\qquad t\ge0.$$
Sustituyendo:
$$x\cdot qr+p(qr-q-r)=(x+p t)\cdot qr+p(q u+r v).$$
Tras cancelar \(x\cdot qr\) y dividir por \(p\), queda
$$qr-q-r=t\cdot qr+q u+r v.$$
Si \(t\ge1\), el lado derecho es al menos \(qr\), imposible porque el izquierdo es \(qr-q-r\lt qr\). Luego \(t=0\), y entonces
$$qr-q-r=q u+r v,$$
contradicción, porque \(qr-q-r\) es precisamente el número de Frobenius para \(q\) y \(r\). Luego \(G_x\) no es representable.
Por qué todo número mayor en la misma clase sí lo es. Si \(N\gt G_x\) y \(N\equiv x\cdot qr\pmod p\), entonces
$$N=x\cdot qr+p\cdot m$$
con
$$m\gt qr-q-r.$$
Entonces \(m\in\langle q,r\rangle\), y por tanto \(N\in S\).
Así, \(G_x\) es exactamente el mayor entero no representable en esa clase residual.
La respuesta global es
$$g(pq,pr,qr)=\max_{0\le x\le p-1}\Bigl(x\cdot qr+p(qr-q-r)\Bigr).$$
El máximo se alcanza en \(x=p-1\), luego
$$g(pq,pr,qr)=(p-1)qr+p(qr-q-r).$$
Al expandir:
$$g(pq,pr,qr)=2pqr-pq-pr-qr.$$
Los generadores son
$$6,\ 10,\ 15.$$
El núcleo de dos generadores da
$$g(3,5)=15-3-5=7.$$
Como \(p=2\), solo hay dos clases residuales:
$$G_0=0\cdot15+2\cdot7=14,\qquad G_1=1\cdot15+2\cdot7=29.$$
Por tanto, la respuesta global es \(29\).
Aquí
$$g(7,11)=77-7-11=59.$$
Entonces
$$G_0=2\cdot59=118,\qquad G_1=77+2\cdot59=195,$$
y por eso
$$g(14,22,77)=195.$$
Una vez conocida la fórmula cerrada, el problema original se convierte simplemente en
$$\sum_{p \lt q \lt r \lt L}(2pqr-pq-pr-qr).$$
1) Criba. primes_below(limit) genera todos los primos menores que el límite.
2) Fórmula cerrada. frobenius_semiprime_triple(p,q,r) devuelve
$$2pqr-pq-pr-qr.$$
3) Validación brute force. Para tríos pequeños, el programa compara esta fórmula con una DP de alcanzabilidad.
4) Acumulación. solve_sum() recorre todos los tríos \(p \lt q \lt r\) y suma en 128 bits.
5) Checkpoint pequeño. Para primos menores que \(10\), el total es
$$29+43+81+139=292.$$
Si \(m=\pi(L)\), la criba cuesta aproximadamente \(O(L\log\log L)\), y el recorrido triple cuesta \(O(m^3)\), que es la parte dominante. La memoria es \(O(m)\).
对互不相同的素数 \(p \lt q \lt r\),定义三个半素数
$$a=pq,\qquad b=pr,\qquad c=qr.$$
对每个素数三元组,要求不能表示成 \(a,b,c\) 的非负线性组合的最大整数。然后把这个 Frobenius 值对所有三元组求和。最终 Project Euler 数字答案照例省略,这里只解释公式为什么成立。
定义
$$S=\langle pq,pr,qr\rangle=\{x\cdot pq+y\cdot pr+z\cdot qr:\ x,y,z\ge0\}.$$
题目要找的是不属于 \(S\) 的最大整数。
因为
$$pq=p\cdot q,\qquad pr=p\cdot r,$$
任何可表示数都可以写成
$$N=z\cdot qr+p\cdot m,$$
其中
$$m\in \langle q,r\rangle=\{u\cdot q+v\cdot r:\ u,v\ge0\}.$$
于是三生成元问题被拆成了模 \(p\) 的各个剩余类问题。
由于 \(p\) 与 \(q,r\) 都不同,
$$\gcd(qr,p)=1.$$
因此乘以 \(qr\) 会在模 \(p\) 下置换所有剩余类。于是每个整数 \(N\) 都唯一对应某个
$$x\in\{0,1,\dots,p-1\}$$
使得
$$N\equiv x\cdot qr\pmod p,$$
从而可写为
$$N=x\cdot qr+p\cdot m.$$
因为 \(q\) 和 \(r\) 互素,经典公式给出
$$g(q,r)=qr-q-r.$$
这意味着:
$$m\notin\langle q,r\rangle\Longrightarrow m\le qr-q-r,$$
并且所有
$$m\gt qr-q-r$$
都已经属于 \(\langle q,r\rangle\)。
固定 \(x\in\{0,\dots,p-1\}\)。在这一类中考虑
$$N=x\cdot qr+p\cdot m.$$
若 \(m\gt qr-q-r\),则 \(m\in\langle q,r\rangle\),因此 \(N\in S\)。所以这一类中最大的缺失值自然候选是
$$G_x=x\cdot qr+p(qr-q-r).$$
为什么 \(G_x\) 不可表示? 若反设 \(G_x\in S\),则存在 \(z,u,v\ge0\) 使得
$$G_x=z\cdot qr+p(q u+r v).$$
按模 \(p\) 看,必须有
$$z\equiv x\pmod p,$$
所以可以写成
$$z=x+p t,\qquad t\ge0.$$
代回去得到
$$x\cdot qr+p(qr-q-r)=(x+p t)\cdot qr+p(q u+r v).$$
消去 \(x\cdot qr\) 并除以 \(p\),得到
$$qr-q-r=t\cdot qr+q u+r v.$$
若 \(t\ge1\),右边至少是 \(qr\),而左边小于 \(qr\),矛盾。所以 \(t=0\)。于是
$$qr-q-r=q u+r v,$$
这又与 \(qr-q-r\) 是 \(q,r\) 的 Frobenius 数矛盾。因此 \(G_x\notin S\)。
为什么同一剩余类中更大的数都可表示? 若 \(N\gt G_x\) 且 \(N\equiv x\cdot qr\pmod p\),则
$$N=x\cdot qr+p\cdot m$$
并且有
$$m\gt qr-q-r.$$
于是 \(m\in\langle q,r\rangle\),从而 \(N\in S\)。
所以 \(G_x\) 正是该剩余类中最大的不可表示数。
全局 Frobenius 数因此为
$$g(pq,pr,qr)=\max_{0\le x\le p-1}\Bigl(x\cdot qr+p(qr-q-r)\Bigr).$$
它在 \(x=p-1\) 处达到最大,因此
$$g(pq,pr,qr)=(p-1)qr+p(qr-q-r).$$
展开后得到
$$g(pq,pr,qr)=2pqr-pq-pr-qr.$$
三个生成元是
$$6,\ 10,\ 15.$$
二元核心部分有
$$g(3,5)=15-3-5=7.$$
因为 \(p=2\),只需看两个剩余类:
$$G_0=0\cdot15+2\cdot7=14,\qquad G_1=1\cdot15+2\cdot7=29.$$
所以全局答案是 \(29\)。
这里
$$g(7,11)=77-7-11=59,$$
于是
$$G_0=2\cdot59=118,\qquad G_1=77+2\cdot59=195,$$
从而
$$g(14,22,77)=195.$$
一旦闭式成立,原问题就只剩下
$$\sum_{p \lt q \lt r \lt L}(2pqr-pq-pr-qr).$$
1) 筛素数。 primes_below(limit) 生成所有小于上界的素数。
2) 闭式函数。 frobenius_semiprime_triple(p,q,r) 直接返回
$$2pqr-pq-pr-qr.$$
3) 小规模暴力校验。 代码对小素数三元组用可达性 DP 验证闭式无误。
4) 最终累加。 solve_sum() 枚举所有 \(p \lt q \lt r\),并用 128 位整数累计和。
5) 小检查点。 当素数小于 \(10\) 时,总和为
$$29+43+81+139=292.$$
设 \(m=\pi(L)\)。筛法复杂度约为 \(O(L\log\log L)\),三重枚举复杂度为 \(O(m^3)\),这是主耗时。空间复杂度为 \(O(m)\)。
Для различных простых \(p \lt q \lt r\) рассматриваются три полупростых числа
$$a=pq,\qquad b=pr,\qquad c=qr.$$
Для каждого такого тройного набора требуется найти наибольшее число, не представимое как неотрицательная линейная комбинация \(a,b,c\). Затем эти значения суммируются по всем простым тройкам ниже заданной границы. Как и на других страницах, финальный ответ Project Euler здесь не приводится; важна сама формула и её вывод.
Положим
$$S=\langle pq,pr,qr\rangle=\{x\cdot pq+y\cdot pr+z\cdot qr:\ x,y,z\ge0\}.$$
Нужно найти наибольшее целое число, не принадлежащее \(S\).
Поскольку
$$pq=p\cdot q,\qquad pr=p\cdot r,$$
любой представимый элемент имеет вид
$$N=z\cdot qr+p\cdot m,$$
где
$$m\in \langle q,r\rangle=\{u\cdot q+v\cdot r:\ u,v\ge0\}.$$
То есть задача с тремя генераторами сводится к анализу классов вычетов по модулю \(p\).
Так как \(p\) отлично от \(q\) и \(r\), имеем
$$\gcd(qr,p)=1.$$
Следовательно, умножение на \(qr\) переставляет все классы по модулю \(p\). Поэтому для каждого \(N\) существует единственное
$$x\in\{0,1,\dots,p-1\}$$
такое, что
$$N\equiv x\cdot qr\pmod p,$$
и тогда
$$N=x\cdot qr+p\cdot m.$$
Поскольку \(q\) и \(r\) взаимно просты, действует классическая формула
$$g(q,r)=qr-q-r.$$
Она означает:
$$m\notin\langle q,r\rangle\Longrightarrow m\le qr-q-r,$$
а всякое
$$m\gt qr-q-r$$
уже лежит в \(\langle q,r\rangle\).
Фиксируем \(x\in\{0,\dots,p-1\}\). В этом классе числа имеют вид
$$N=x\cdot qr+p\cdot m.$$
Если \(m\gt qr-q-r\), то \(m\in\langle q,r\rangle\), а значит \(N\in S\). Поэтому естественный кандидат на максимальное непредставимое число:
$$G_x=x\cdot qr+p(qr-q-r).$$
Почему \(G_x\) не представимо? Предположим противное. Тогда
$$G_x=z\cdot qr+p(q u+r v)$$
для некоторых \(z,u,v\ge0\). По модулю \(p\) обязательно
$$z\equiv x\pmod p,$$
то есть
$$z=x+p t,\qquad t\ge0.$$
Подстановка даёт
$$x\cdot qr+p(qr-q-r)=(x+p t)\cdot qr+p(q u+r v).$$
После сокращения \(x\cdot qr\) и деления на \(p\) получаем
$$qr-q-r=t\cdot qr+q u+r v.$$
Если \(t\ge1\), правая часть не меньше \(qr\), а левая равна \(qr-q-r\lt qr\), противоречие. Значит \(t=0\), и тогда
$$qr-q-r=q u+r v,$$
что невозможно, потому что \(qr-q-r\) — Frobenius-число для \(q\) и \(r\). Следовательно, \(G_x\) действительно не представимо.
Почему всё большее в том же классе уже представимо? Пусть \(N\gt G_x\) и \(N\equiv x\cdot qr\pmod p\). Тогда
$$N=x\cdot qr+p\cdot m$$
и из неравенства \(N\gt G_x\) следует
$$m\gt qr-q-r.$$
Значит \(m\in\langle q,r\rangle\), следовательно \(N\in S\).
Итак, \(G_x\) — точное наибольшее непредставимое число в классе \(x\).
Теперь глобальное значение равно
$$g(pq,pr,qr)=\max_{0\le x\le p-1}\Bigl(x\cdot qr+p(qr-q-r)\Bigr).$$
Максимум достигается при \(x=p-1\), так что
$$g(pq,pr,qr)=(p-1)qr+p(qr-q-r).$$
После раскрытия скобок:
$$g(pq,pr,qr)=2pqr-pq-pr-qr.$$
Генераторы равны
$$6,\ 10,\ 15.$$
Для пары \((3,5)\)
$$g(3,5)=15-3-5=7.$$
Так как \(p=2\), есть два класса:
$$G_0=0\cdot15+2\cdot7=14,\qquad G_1=1\cdot15+2\cdot7=29.$$
Значит, глобальный ответ — \(29\).
Здесь
$$g(7,11)=77-7-11=59,$$
поэтому
$$G_0=2\cdot59=118,\qquad G_1=77+2\cdot59=195,$$
и
$$g(14,22,77)=195.$$
После вывода формулы исходная задача сводится к сумме
$$\sum_{p \lt q \lt r \lt L}(2pqr-pq-pr-qr).$$
1) Решето. primes_below(limit) строит список простых.
2) Закрытая формула. frobenius_semiprime_triple(p,q,r) возвращает
$$2pqr-pq-pr-qr.$$
3) Проверка brute force. На малых примерах код сравнивает формулу с полной таблицей достижимости.
4) Финальная сумма. solve_sum() перебирает все \(p\lt q\lt r\) и аккумулирует результат в 128-битной переменной.
5) Малый контроль. Для простых меньше \(10\) получается
$$29+43+81+139=292.$$
Если \(m=\pi(L)\), то решето стоит примерно \(O(L\log\log L)\), а тройной перебор — \(O(m^3)\) и доминирует по времени. Память: \(O(m)\).
لأوليات مختلفة \(p \lt q \lt r\) نعرّف الأعداد نصف الأولية الثلاثة
$$a=pq,\qquad b=pr,\qquad c=qr.$$
لكل ثلاثي أولي نريد أكبر عدد لا يمكن كتابته كمزيج خطي غير سالب من \(a,b,c\). ثم نجمع هذه القيمة على جميع الثلاثيات تحت الحد المعطى. وكالعادة لا نعرض الجواب النهائي لمسألة Project Euler؛ المهم هنا هو اشتقاق الصيغة المغلقة.
لنعرّف
$$S=\langle pq,pr,qr\rangle=\{x\cdot pq+y\cdot pr+z\cdot qr:\ x,y,z\ge0\}.$$
المطلوب هو أكبر عدد صحيح لا ينتمي إلى \(S\).
بما أن
$$pq=p\cdot q,\qquad pr=p\cdot r,$$
فإن كل عدد قابل للتمثيل يمكن كتابته بالشكل
$$N=z\cdot qr+p\cdot m,$$
حيث
$$m\in \langle q,r\rangle=\{u\cdot q+v\cdot r:\ u,v\ge0\}.$$
إذن المسألة ذات المولدات الثلاثة تنقسم إلى فئات بواقي modulo \(p\).
ولأن \(p\) يختلف عن \(q\) و\(r\)، فإن
$$\gcd(qr,p)=1.$$
ومن ثم فإن الضرب في \(qr\) يبدّل جميع الفئات modulo \(p\). لذلك لكل عدد \(N\) يوجد وحيدًا
$$x\in\{0,1,\dots,p-1\}$$
بحيث
$$N\equiv x\cdot qr\pmod p,$$
وعندها نستطيع كتابة
$$N=x\cdot qr+p\cdot m.$$
بما أن \(q\) و\(r\) متباينان نسبيًا، فلدينا الصيغة الكلاسيكية
$$g(q,r)=qr-q-r.$$
وهذا يعني أن
$$m\notin\langle q,r\rangle\Longrightarrow m\le qr-q-r,$$
وكل عدد
$$m\gt qr-q-r$$
ينتمي بالفعل إلى \(\langle q,r\rangle\).
ثبّت \(x\in\{0,\dots,p-1\}\). الأعداد في هذه الفئة تكتب بالشكل
$$N=x\cdot qr+p\cdot m.$$
إذا كان \(m\gt qr-q-r\)، فإن \(m\in\langle q,r\rangle\)، وبالتالي \(N\in S\). لذلك المرشح الطبيعي لأكبر عدد مفقود في هذه الفئة هو
$$G_x=x\cdot qr+p(qr-q-r).$$
لماذا لا يمكن تمثيل \(G_x\)؟ افترض العكس. عندئذ يوجد \(z,u,v\ge0\) بحيث
$$G_x=z\cdot qr+p(q u+r v).$$
وبالنظر modulo \(p\)، لا بد أن
$$z\equiv x\pmod p,$$
أي
$$z=x+p t,\qquad t\ge0.$$
بالتعويض نحصل على
$$x\cdot qr+p(qr-q-r)=(x+p t)\cdot qr+p(q u+r v).$$
وبعد حذف \(x\cdot qr\) والقسمة على \(p\) نحصل على
$$qr-q-r=t\cdot qr+q u+r v.$$
إذا كان \(t\ge1\)، فالطرف الأيمن لا يقل عن \(qr\)، بينما الطرف الأيسر هو \(qr-q-r\lt qr\)، وهذا مستحيل. إذن \(t=0\)، وعندها يصبح
$$qr-q-r=q u+r v,$$
وهذا يناقض أن \(qr-q-r\) هو عدد Frobenius للعددين \(q\) و\(r\). لذلك فـ \(G_x\) غير قابل للتمثيل فعلًا.
ولماذا كل عدد أكبر منه في الفئة نفسها قابل للتمثيل؟ إذا كان \(N\gt G_x\) و\(N\equiv x\cdot qr\pmod p\)، فلدينا
$$N=x\cdot qr+p\cdot m$$
مع
$$m\gt qr-q-r.$$
إذن \(m\in\langle q,r\rangle\)، ومن ثم \(N\in S\).
إذًا \(G_x\) هو بالضبط أكبر عدد غير قابل للتمثيل في تلك الفئة.
وعليه فإن عدد Frobenius الكلي يساوي
$$g(pq,pr,qr)=\max_{0\le x\le p-1}\Bigl(x\cdot qr+p(qr-q-r)\Bigr).$$
ويبلغ هذا الحد الأقصى عند \(x=p-1\)، ومن ثم
$$g(pq,pr,qr)=(p-1)qr+p(qr-q-r).$$
وبتوسيع التعبير نحصل على
$$g(pq,pr,qr)=2pqr-pq-pr-qr.$$
المولدات هي
$$6,\ 10,\ 15.$$
أما المسألة الثنائية الأساسية فتعطي
$$g(3,5)=15-3-5=7.$$
ولأن \(p=2\)، فلدينا فئتان فقط:
$$G_0=0\cdot15+2\cdot7=14,\qquad G_1=1\cdot15+2\cdot7=29.$$
إذًا الجواب الكلي هو \(29\).
هنا
$$g(7,11)=77-7-11=59,$$
ومن ثم
$$G_0=2\cdot59=118,\qquad G_1=77+2\cdot59=195,$$
وبالتالي
$$g(14,22,77)=195.$$
بعد إثبات الصيغة المغلقة تصبح المسألة الأصلية مجرد
$$\sum_{p \lt q \lt r \lt L}(2pqr-pq-pr-qr).$$
1) منخل الأوليات. primes_below(limit) يولد جميع الأوليات تحت الحد.
2) دالة الصيغة المغلقة. frobenius_semiprime_triple(p,q,r) تعيد مباشرة
$$2pqr-pq-pr-qr.$$
3) تحقق brute force. في الحالات الصغيرة يقارن البرنامج هذه الصيغة مع جدول وصول كامل.
4) التجميع النهائي. solve_sum() يمر على جميع \(p \lt q \lt r\) ويجمع الناتج باستخدام 128 بت.
5) نقطة تحقق صغيرة. للأوليات الأصغر من \(10\) يكون المجموع
$$29+43+81+139=292.$$
إذا كان \(m=\pi(L)\)، فإن المنخل يكلف تقريبًا \(O(L\log\log L)\)، بينما تعداد جميع الثلاثيات يكلف \(O(m^3)\) وهو الجزء المسيطر زمنيًا. الذاكرة \(O(m)\).