<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Clasa_a_VI-a_lec%C8%9Bia_4</id>
	<title>Clasa a VI-a lecția 4 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Clasa_a_VI-a_lec%C8%9Bia_4"/>
	<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Clasa_a_VI-a_lec%C8%9Bia_4&amp;action=history"/>
	<updated>2026-04-19T08:58:07Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.algopedia.ro/wiki/index.php?title=Clasa_a_VI-a_lec%C8%9Bia_4&amp;diff=15529&amp;oldid=prev</id>
		<title>Bella: /* Ciurul lui Eratostene */</title>
		<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Clasa_a_VI-a_lec%C8%9Bia_4&amp;diff=15529&amp;oldid=prev"/>
		<updated>2018-09-20T13:30:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Ciurul lui Eratostene&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Lectie = &lt;br /&gt;
&lt;br /&gt;
== Descompunerea in factori primi ==&lt;br /&gt;
O implementare a acestei probleme de complexitate O(sqrt(n)):&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
  int n, div, exp;&lt;br /&gt;
&lt;br /&gt;
  scanf(&amp;quot;%d&amp;quot;, &amp;amp;n);&lt;br /&gt;
  div = 2; //Incepem cautarea factorilor primi de la primul numar prim&lt;br /&gt;
  while ( div * div &amp;lt;= n ) { //Cautam factorii primi pana la radicalul lui n&lt;br /&gt;
    exp = 0;&lt;br /&gt;
    while ( n % div == 0 ) {&lt;br /&gt;
      n /= div;&lt;br /&gt;
      exp++;&lt;br /&gt;
    }&lt;br /&gt;
    if (exp &amp;gt; 0)&lt;br /&gt;
      printf(&amp;quot;%d^%d\n&amp;quot;, div, exp);&lt;br /&gt;
    div++;&lt;br /&gt;
  }&lt;br /&gt;
  // daca n mai contine un factor, el este un numar prim la puterea unu&lt;br /&gt;
  if ( n &amp;gt; 1 )&lt;br /&gt;
    printf( &amp;quot;%d^1\n&amp;quot;, n );&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Numarul de divizori si suma divizorilor ==&lt;br /&gt;
&lt;br /&gt;
Fie descompunerea unui numar n in factori primi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
n= d_1^{p_1} \ast d_2^{p_2} \ast ... \ast d_k^{p_k}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Numarul de divizori va fi===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathit{nrdiv}=\left({p}_{1}+1\right)\ast \left({p}_{2}+1\right)\ast \mathrm{...}\ast \left({p}_{k}+1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Suma divizorilor===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathit{sdiv}=\frac{{d}_{1}^{p1+1}-1}{{d}_{1}-1}\ast \frac{{d}_{2}^{p2+1}-1}{d2-1}\ast \mathrm{...}\ast \frac{{d}_{k}^{\mathit{pk}+1}-1}{{d}_{k}-1}&amp;lt;/math&amp;gt;&lt;br /&gt;
== Indicatorul lui Euler ==&lt;br /&gt;
[https://ro.wikipedia.org/wiki/Indicatorul_lui_Euler Indicatorul lui Euler] calculeaza numarul de numere din intervalul [1, n], prime cu n.&lt;br /&gt;
* [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=1908 Fractii_ired pbinfo, clasa a 9-a]&lt;br /&gt;
&lt;br /&gt;
== Ciurul lui Eratostene ==&lt;br /&gt;
Reamintim aici doar algoritmul studiat anul trecut:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;char ciur[2000000];&lt;br /&gt;
...&lt;br /&gt;
fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;n );&lt;br /&gt;
ciur[0] = ciur[1] = 1;&lt;br /&gt;
for ( d = 2; d * d &amp;lt;= n; d++ )&lt;br /&gt;
  if ( ciur[d] == 0 ) // daca d este prim&lt;br /&gt;
    for ( i = d * d; i &amp;lt;= n; i = i + d ) // vom marca numerele din d in d&lt;br /&gt;
      ciur[i] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nu uitați:&lt;br /&gt;
* Vectorul &amp;lt;tt&amp;gt;ciur[]&amp;lt;/tt&amp;gt; este de tip caracter și nu întreg!&lt;br /&gt;
* În final vectorul &amp;lt;tt&amp;gt;ciur[i]&amp;lt;/tt&amp;gt; este &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; dacă numărul este prim sau &amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
Complexitate? Matematica este complexă, dar rețineți că metoda este aproximativ &amp;#039;&amp;#039;O(n)&amp;#039;&amp;#039; pentru valorile lui n cu care vom lucra noi. Pentru cei interesați, complexitatea este de fapt &amp;#039;&amp;#039;O(n∙log&amp;amp;nbsp;log&amp;amp;nbsp;n)&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Calculul multiplicității unui număr prim în &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;nowiki&amp;gt;!&amp;lt;/nowiki&amp;gt; ==&lt;br /&gt;
Matematicianul [http://en.wikipedia.org/wiki/Adrien-Marie_Legendre Adrien-Marie_Legendre] a descoperit că multiplicitatea (exponentul) unui număr prim &amp;#039;&amp;#039;p&amp;#039;&amp;#039; care apare în descompunerea în factori primi a lui &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;nowiki&amp;gt;!&amp;lt;/nowiki&amp;gt; poate fi exprimată exact ca:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;Exp(p,n!) = \left \lfloor \frac{n}{p} \right \rfloor + \left \lfloor \frac{n}{p^2} \right \rfloor + \left \lfloor \frac{n}{p^3} \right \rfloor + \cdots = \sum_{i=1}^{\infty} \left \lfloor \frac{n}{p^i} \right \rfloor .&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acest fapt se bazează pe numărarea factorilor &amp;#039;&amp;#039;p&amp;#039;&amp;#039; ai întregilor de la 1 la&amp;amp;nbsp;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;. Numărul multiplilor lui &amp;#039;&amp;#039;p&amp;#039;&amp;#039; în numerele de la 1 la &amp;#039;&amp;#039;n&amp;#039;&amp;#039; este &amp;lt;math&amp;gt;\textstyle \left \lfloor \frac{n}{p} \right \rfloor&amp;lt;/math&amp;gt;; dar această formulă numără numerele cu doi factori &amp;#039;&amp;#039;p&amp;#039;&amp;#039; o singură dată. De aceea trebuie să mai numărăm încă &amp;lt;math&amp;gt;\textstyle \left \lfloor \frac{n}{p^2} \right \rfloor&amp;lt;/math&amp;gt; factori ai lui &amp;#039;&amp;#039;p&amp;#039;&amp;#039;. În mod similar pentru trei, patru, cinci factori, pînă la infinit. Însă suma este finită deoarece &amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;&amp;amp;nbsp;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;lt;/sup&amp;gt; este mai mic sau egal cu &amp;#039;&amp;#039;n&amp;#039;&amp;#039; într-un număr finit de valori ale lui &amp;#039;&amp;#039;i&amp;#039;&amp;#039;, drept care funcția parte întreagă va fi zero pentru toate celelalte valori.&lt;br /&gt;
&lt;br /&gt;
Cînd scriem programul pentru calculul exponentului ne vom opri la acel &amp;#039;&amp;#039;i&amp;#039;&amp;#039; pentru care &amp;#039;&amp;#039;p&amp;lt;sup&amp;gt;i&amp;lt;/sup&amp;gt; &amp;gt; n&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Calculul multiplicității unui număr prim la o putere în &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;nowiki&amp;gt;!&amp;lt;/nowiki&amp;gt; ==&lt;br /&gt;
Este simplu de demonstrat că dacă avem un număr prim &amp;#039;&amp;#039;p&amp;#039;&amp;#039; la o putere &amp;#039;&amp;#039;k&amp;#039;&amp;#039; atunci multiplicitatea lui &amp;#039;&amp;#039;p&amp;lt;sup&amp;gt;k&amp;lt;/sup&amp;gt;&amp;#039;&amp;#039; în &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;nowiki&amp;gt;!&amp;lt;/nowiki&amp;gt; este&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;Exp(p^k,n!) = \frac{Exp(p,n!)}{k}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Calculul multiplicității unui număr oarecare în &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;nowiki&amp;gt;!&amp;lt;/nowiki&amp;gt; ==&lt;br /&gt;
Este simplu să arătăm că dacă avem un număr &amp;#039;&amp;#039;a&amp;#039;&amp;#039; a cărui descompunere în factori primi este&lt;br /&gt;
&lt;br /&gt;
:&amp;#039;&amp;#039;a = p&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;sup&amp;gt;k&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/sup&amp;gt; • p&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;sup&amp;gt;k&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/sup&amp;gt; • … • p&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt;&amp;lt;sup&amp;gt;k&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt;&amp;lt;/sup&amp;gt;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
atunci multiplicitatea (exponentul) lui &amp;#039;&amp;#039;a&amp;#039;&amp;#039; în &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;nowiki&amp;gt;!&amp;lt;/nowiki&amp;gt; este&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;Exp(a,n!) = min(Exp(p_1^{k_1},n!),Exp(p_2^{k_2},n!),\ldots,Exp(p_m^{k_m},n!))&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sau&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;Exp(a,n!) = min(\frac{Exp(p_1,n!)}{k_1},\frac{Exp(p_2,n!)}{k_2},\ldots,\frac{Exp(p_m,n!)}{k_m})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TEMA ==&lt;br /&gt;
&lt;br /&gt;
* [http://varena.ro/problema/factk factk] .campion 2004 [http://isa.algopedia.ro/wiki/index.php/factk Rez]&lt;br /&gt;
* [http://varena.ro/problema/fact fact] ONI 2006 clasa a 9-a [http://isa.algopedia.ro/wiki/index.php/fact Rez]&lt;br /&gt;
* [http://varena.ro/problema/treidiv trei divizori][http://isa.algopedia.ro/wiki/index.php/treidiv Rez]&lt;br /&gt;
&lt;br /&gt;
=== Ciur ===&lt;br /&gt;
* [http://varena.ro/problema/prime prime], Ioana Bica [http://isa.algopedia.ro/wiki/index.php/prime Rez]&lt;br /&gt;
&lt;br /&gt;
* [http://varena.ro/problema/bileprime bileprime] campion 2010, (inca nu e pusa) [http://isa.algopedia.ro/wiki/index.php/bileprime Rez]&lt;br /&gt;
&lt;br /&gt;
* [http://varena.ro/problema/paisprezece paisprezece] [http://isa.algopedia.ro/wiki/index.php/paisprezece Rez]&lt;br /&gt;
&lt;br /&gt;
=== Ciur, Compactare Ciur ===&lt;br /&gt;
* [http://varena.ro/problema/prime1 prime1], campion2005 (inca nu e pusa)&lt;br /&gt;
http://campion.edu.ro/arhiva/index.php?page=problem&amp;amp;action=view&amp;amp;id=365&lt;br /&gt;
* [http://varena.ro/problema/sprime sprime], XOR 2015 clasa a 9 a&lt;br /&gt;
&lt;br /&gt;
=== Ciur, (Compactare ciur), Legendre ===&lt;br /&gt;
&lt;br /&gt;
* [http://varena.ro/problema/factori Factori], OJI 2012 (clasa a 6-a) [http://isa.algopedia.ro/wiki/index.php/Factori Rezolvare]&lt;/div&gt;</summary>
		<author><name>Bella</name></author>
	</entry>
</feed>