рд╕реБрдВрджрд░рдо рдЫрд▓рдиреА

рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рд╕реБрдВрджрд░рдорд╛ рдЫрд▓рдиреА рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкреГрд╖реНрдарднреВрдорд┐ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдореИрдВрдиреЗ рдпрд╣ рдмрддрд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЦреБрдж рдХреНрдпрд╛ рд╕рдВрдЦреНрдпрд╛-рд╕рд┐рджреНрдзрд╛рдВрддрд╡рд╛рджреА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдЕрдзреНрдпрдпрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкрдврд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рд╕реБрдиреНрджрд░рдо рдЫрд▓рдиреА рдкреНрд░рд╛рдЗрдо рдирдВрдмрд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рддреАрди рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЕрдм рдпрд╣ рдЦрд░рд╛рдм рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдХрд╛рд░рдг рдХреБрдЫ рд╡рд┐рджреЗрд╢реА рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ: рдУ (рдПрди (logN))ред рд╣рд╛рд▓рд╛рдБрдХрд┐, asymptotics asymptotics рд╣реИрдВ, рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, 32-рдмрд┐рдЯ sieving рд░реЗрдВрдЬ рдореЗрдВ, Atkin, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реБрдВрджрд░рдо рдХреЛ рдХреЗрд╡рд▓ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЕрдиреБрдХреВрд▓рди рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИред

рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдШреВрдорддреЗ рд╣реБрдП, рдПрдЯрдХрд┐рди рдЫрд▓рдиреА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд╕реБрдВрджрд░рдо рдЫрд▓рдиреА рдХреЛ рди рддреЛ рд╕рдордп рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рди рд╣реА рд╕реНрдореГрддрд┐ рджрдХреНрд╖рддрд╛ рдореЗрдВред рддреЛ рд╕реБрдВрджрд░рдо рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╣рд╛рдпрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реБрдВрджрд░рд╛рдорд╛ рдЫрд▓рдиреА рд╕рднреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╕рдВрдЦреНрдпрд╛ 3 тЙд n s N "рдШрдЯрдХреЛрдВ рдХреЗ рдмрд╛рд╣рд░" рдЬрд╛рдиреЗ рдореЗрдВ рдкрд╛рддреА рд╣реИред рд╡реНрдпрд╛рдкрдХрддрд╛ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд┐рдирд╛, рдПрди рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╡рд┐рд╖рдо рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдПрди рднреА рд╣реИ, рддреЛ рдпрд╣ рд╕рдордЧреНрд░ рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ, рдФрд░ рдЗрд╕реЗ рдКрдкрд░реА рд╕реАрдорд╛ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдПрдХ рд╕реЗ рдХрдо рдХрд░рдХреЗ рд╕рд╛рдЗрдбрд┐рдВрдЧ рд░реЗрдВрдЬ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрдереНрдп рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдХрд┐рд╕реА рднреА рд╡рд┐рд╖рдо рд╕рдордЧреНрд░ рд╕рдВрдЦреНрдпрд╛ n рдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рджреЛ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╡рд┐рд╖рдо рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЙрддреНрдкрд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

(1) n = (2 * i + 1) * (2 * j + 1),

рдЬрд╣рд╛рдБ i рдФрд░ j рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╣реИрдВ (рд╢реВрдиреНрдп рдХреЛрдИ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрднрд╛рдЬреНрдп рд╕рдВрдЦреНрдпрд╛ n рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ n рдореЗрдВ рд╕реНрд╡рдпрдВ рдФрд░ рдПрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рднрд╛рдЬрдХ рд╣реИрдВред

рд╣рдо 2 * m + 1 рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╖рдо n рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЗрд╕реЗ (1) рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ m рдХреЗ рд▓рд┐рдП рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

(реи) рдо = реи * рдореИрдВ * рдЬреЗ + рдЖрдИ + рдЬреЗред

рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рд╕реАрдзреЗ рд╕реБрдВрджрд░рдо рдХреА рдЫрд▓рдиреА рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рджрд┐рдП рдЧрдП рдЕрдВрддрд░рд╛рд▓ рд╕реЗ рд╕рдВрдпреБрдХреНрдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ m рд╡рд╛рд▓рд╛ рддрддреНрд╡ 2 * m + 1 рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИред рдЪрд░ i рдФрд░ j рдХреЗ рдорд╛рдиреЛрдВ рдХреА рдЧрдгрдирд╛ рдЖрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕реВрддреНрд░ (2) рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪрдХрд╛рдВрдХ m рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЗрд╕реА рдореЗрдВред рд╕рд░рдгреА рддрддреНрд╡реЛрдВ рдиреЗ "рд╕рдордЧреНрд░ рд╕рдВрдЦреНрдпрд╛" рдЪрд┐рд╣реНрди рд╕реЗрдЯ рдХрд┐рдпрд╛ред рдЧрдгрдирд╛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд░реЗрдВрдЬ рдореЗрдВ рд╕рднреА рдорд┐рд╢реНрд░рд┐рдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдирд┐рд╢рд╛рди рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ primes рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред

рдкрд┐рдЫрд▓реА рддрд░реНрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, sieving рд░реЗрдВрдЬ рдПрди рдХреА рдКрдкрд░реА (рд╡рд┐рд╖рдо) рд╕реАрдорд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реВрдЪрдХрд╛рдВрдХ рдПрдо рдЕрдкрдиреЗ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп mmax = (рдПрди - 1) / 2 рдорд╛рдирддрд╛ рд╣реИред рдпрд╣ рд╕рд░рдгреА рдХрд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╣рдо рджреЛ рдЪрдХреНрд░реЛрдВ рдореЗрдВ i рдФрд░ j рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВрдЧреЗ: i рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд╣рд░реА рд▓реВрдк, рдФрд░ j рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рдЖрдВрддрд░рд┐рдХ рд▓реВрдкред

рдмрд╛рд╣рд░реА рд▓реВрдк рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди i = 1 рд╣реИред рджреЛрд╣рд░рд╛рдП рдЧрдП рджреЛрд╣рд░рд╛рдП рдЧрдП рдЧрдгрдирд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд░ i рдФрд░ j рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдкреВрд░реНрдг рд╕рдорд░реВрдкрддрд╛ (2) рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдВрддрд░рд┐рдХ рдЪрдХреНрд░ рдорд╛рди j = i рд╕реЗ рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдмрд╛рд╣рд░реА рд▓реВрдк рдХрд╛рдЙрдВрдЯрд░ рдЗрдореИрдХреНрд╕ред I рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рдорд╛рди рдЬреНрдЮрд╛рдд рдХрд░реЗрдВред рдпрджрд┐ рд░реЗрдВрдЬ N рдХреА рд╕реАрдорд╛ рдПрдХ рд╡рд┐рд╖рдо рд╕рдВрдпреБрдХреНрдд рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рддреЛ i = imax рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде, рдЖрдВрддрд░рд┐рдХ рд▓реВрдк рдХреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рдЗрд╕рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ j = imax рдХреЗ рдорд╛рди рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (2) рдЗрд╕рдХрд╛ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рд▓реЗрдЧрд╛ред

рдПрдордореЗрдХреНрд╕ = 2 * рдЗрдореИрдХреНрд╕ * рдЗрдореИрдХреНрд╕ + рдЗрдореИрдХреНрд╕ + рдЗрдореИрдХреНрд╕,
imax ^ 2 + рдЗрдореИрдХреНрд╕ - рдПрдордореИрдХреНрд╕ / 2 = 0ред

рдЗрд╕ рджреНрд╡рд┐рдШрд╛рдд рд╕рдореАрдХрд░рдг рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ: imax = (2 (2 * mmax + 1) -1) / 2 = (2N-1) / 2ред
рдЖрдВрддрд░рд┐рдХ рдЪрдХреНрд░ jmax found j рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрдВрдз рдЕрд╕рдорд╛рдирддрд╛ рд╕реЗ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдПрдордореЗрдХреНрд╕, 2 * i * j + i + j , рдЬрд╣рд╛рдБ рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ: jmax = (mmax - i) / (2 * i + 1)ред

рдКрдкрд░реА рд╕реАрдорд╛ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рднрд┐рдиреНрдирд╛рддреНрдордХ рднрд╛рдЧ рдХреЛ рдЫреЛрдбрд╝рддреЗ рд╣реБрдП, рдкреВрд░реЗ рдкреВрд░реЗ рдореВрд▓реНрдп рдкрд░ рдЧреЛрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╕реА # рд╕реБрдВрджрд░рдо рд╡рд░реНрдЧ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬреЛ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

using System; using System.Collections; namespace CSh_Sundaram { public class Sundaram { public double dt; //   () private long t1; //   private long t2; //   private uint limit; //     private int arrlength; //   private BitArray Prim; //    private int counter; public Sundaram(uint _limit) { limit = _limit; if (limit % 2 == 0) limit -= 1; arrlength = (int)(limit / 2); Prim = new BitArray(arrlength); t1 = DateTime.Now.Ticks; Sieve(); //  t2 = DateTime.Now.Ticks; dt = (double)(t2 - t1) / 10000000D; counter = -1; } public uint NextPrime { get { while (counter < arrlength - 1) { counter++; if (!Prim[counter]) return (uint)(2 * counter + 3); } return 0; } } private void Sieve() { int imax = ((int)Math.Sqrt(limit) - 1) / 2; for (int i = 1; i <= imax; i++) { int jmax = (arrlength - i) / (2 * i + 1); for (int j = i; j <= jmax; j++) { Prim[2 * i * j + i + j - 1] = true; } } } } } 

рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрдм рд╕реБрдВрджрд░рдо рдХрд╛ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕реАрдорд╛ рд░реЗрдВрдЬ рдХреА рдКрдкрд░реА рд╕реАрдорд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд┐рдлреНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рд╕ BitArray рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд░рдирдЯрд╛рдЗрдо рдмрдврд╝рд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпреВрдВрдЯ рдкреНрд░рдХрд╛рд░ рдХреА рдкреВрд░реА 32-рдмрд┐рдЯ рд░реЗрдВрдЬ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд░реНрдЧ рд░рдЪрдирд╛рдХрд╛рд░ рд╕реЗ рдЫрд▓рдиреА () рд╡рд┐рдзрд┐ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╕рдордп рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, dt рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕реЗрдХрдВрдб рдореЗрдВ рдЫрд▓рдиреА рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рд╣реЛрдЧрд╛ред

рдиреЗрдХреНрд╕реНрдЯрдкреНрд░рд╛рдЗрдо рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордп, рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ, 3 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ, рдкреНрд░рд╛рдЗрдореНрд╕ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдВрдЧреЗред рд╕реАрдорд╛ рд╕реЗ рд╕рднреА рд╕рд░рд▓ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдорд╛рди 0 рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

Source: https://habr.com/ru/post/hi465737/


All Articles